Los

Web Hacking/LOS

Lord of SQL Injection - frankenstein

Blind & Error-Based SQL Injection 문제인 것 같다. 싱글쿼터는 필터링하지 않아서 문자열 탈출은 수월하게 이루어질 것 같다. 그런데 필터링에 괄호들과 'union' 이 존재한다. 서브쿼리와 함수는 이용하지 못할 것 같다. 코드의 첫 번째 paragraph를 보면 마지막 line에 query에 error가 존재하면 "error"라는 문자열 페이지로 exit 된다. 바로 이것을 이용하면 될 것 같다. 우선 오류를 어떻게 만들어 내야할지 고민해야 한다. union을 사용할 수 없기 때문에 subquery로 하여금 select으로 뽑아낼 2개의 columns 보다 많은 수의 column들을 뽑아 오류를 발생시키는 것은 불가능하다. 이때 정수의 범위를 벗어나게 하여 오류를 발생시킬 수 있..

Web Hacking/LOS

Lord of SQL Injection - phantom

table을 이용하는 문제가 다시 등장했다. 우선 차근차근 코드를 이해해보자. 제일 먼저 duplicate 이라는 문자열을 필터링한다. 필터링이 없었다면, insert 문 제일 뒤쪽에 on duplicate 를 적음으로써 기존에 있던 table 데이터를 우리가 원하는 특정 문자열이나 숫자로 값을 바꿀 수 있다. 그렇게 해서 no의 값이 1인 row를 다른 no 값으로 변경하여 email이 asterisk(*)로 변경되는 조건문을 뛰어넘을 수 있었다. 그 다음은 $_SERVER[REMOTE_ADDR] 로 접속자의 IP를 가져오고, joinmail 값을 가져와 하나의 row를 insert 한다. 예를 들어서 간단한 임의의 이메일을 전달해주면 다음과 같이 하나의 row가 추가된 것을 볼 수 있다. 한 가지 신..

Web Hacking/LOS

Lord of SQL Injection - red_dragon

박수가 절로 나오는 문제였다. 예전 문제에 admin 이라는 문자열 필터링을 우회하기 위하여 adadminmin 과 같은 방식으로 썼던 것이 기억 나는가? 무언가 유사한 패턴이다. 주석에 대한 특성도 같이 사용된 문제였다. 문제는 admin 계정의 no를 알아내는 것이다. pw를 찾는 것과 유사하다. Blind SQL Injection 문제로 보인다. id는 7글자밖에 사용하지 못한다. no 영역은 숫자가 아니면 1을 반환한다. 따라서 no 에서는 아무런 짓을 할 수가 없다. 처음에는 no영역에 16진수를 넣으면 되지 않을까 했지만 PHP 문법의 is_numeric 함수에서는 16진수와 2진수는 적용되지 않는다고 한다. 우선 id에서 Hello 라는 문자열을 출력시키기 위하여 필요한 최소 글자는 어떻게 ..

Web Hacking/LOS

Lord of SQL Injection - evil_wizard

이전 문제에서 sleep이나 benchmark 함수를 사용하지 못 한다는 점만 빼고 모든 것은 다 똑같다. SQL에서는 order로 table을 정리할 적에, 만약 order 에 대한 값이 오류를 일으킨다면 정상적인 table을 return 해주지 못하게 된다. 예를 들어서 order에 싱글쿼터만을 전달해주면, 과 같이 mysqli_fetch_array 함수가 아무런 값도 return 해주지 않아 우리가 보는 문제 페이지에도 아무런 table 값이 출력되지 않는다. 정상적인 query문이라면, 과 같이 모든 사용자들이 출력된다. 동작 그만. 이 점을 이용하면 되지 않을까? 우리는 Error-Based SQL Injection에서 수행한 방법처럼 특정 문자열이 출력되는 것을 이용하여 query문의 오류 여..

Lucvs
'Los' 태그의 글 목록 (4 Page)