티스토리 뷰
SQL INJECTION 문자열을 통해 SQL Injection 문제임을 알 수 있고 입력할 수 있는 공간이 있다. 다른 정보를 얻기 위해서 소스 파일을 보면 index.phps 소스 파일도 제공하고 있다.
소스 파일을 보면
$q=@mysql_fetch_array(mysql_query("select id from challenge27_table where id='guest' and no=($_GET[no])")) or die("query error");
$GET_[no] 을 통해서 받은 값을 Query에 입력하고 나온 결과값을 비교하였을 때 admin이 출력이 되면 문제를 풀 수 있다.
그리고 소스 파일 중간에 보면 SQL Injection에 사용되는 다양한 문자들을 필터링한 것을 볼 수 있다.
이 문제는 no= 로 입력받는 부분이 '(single-quote)로 감싸진 것이 아니라 () 괄호로만 감싸져 있다. 그렇기 때문에 먼저 임의의 값을 입력하고 ) 괄호로 닫아준 다음에 or 1 을 입력하여 전체 값을 불러오도록 참을 만들어 주고 order by 정렬을 이용하여 id 로 오름차순으로 정렬을 하고 나머지 부분을 주석으로 처리하면 문제를 풀 수 있다.
order by 에서 오름차순, 내림차순에 대한 값을 입력하지 않으면 default로 asc(오름차순) 정렬을 한다.
정렬 예)
ASC: admin -> do9dark -> guest
DESC: guest -> do9dark -> admin
?no=-1) or 1 order by id-- -
'Wargame > Webhacking.kr' 카테고리의 다른 글
Challenge 32 (0) | 2015.08.10 |
---|---|
Challenge 31 (0) | 2015.08.09 |
Challenge 30 (0) | 2015.08.09 |
Challenge 29 (0) | 2015.08.07 |
Challenge 28 (0) | 2015.08.07 |
Challenge 26 (0) | 2015.08.07 |
Challenge 25 (0) | 2015.08.07 |
Challenge 24 (0) | 2015.08.02 |
Challenge 23 (0) | 2015.08.02 |
Challenge 22 (0) | 2015.07.12 |