티스토리 뷰

Wargame/Webhacking.kr

Challenge 27

do9dark 2015. 8. 7. 11:42


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
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
링크
공지사항
Total
Today
Yesterday