<html>
<head>
<title>Chellenge 39</title>
</head>
<body>
<?
$pw="????";
if($_POST[id])
{
$_POST[id]=str_replace("\\","",$_POST[id]);
$_POST[id]=str_replace("'","''",$_POST[id]);
$_POST[id]=substr($_POST[id],0,15);
echo "<br><br>sisisipar: ".$_POST[id]."<br><br>";
echo "QUERY :". "select 'good' from zmail_member where id='$_POST[id]"."<br><br>";
$q=mysql_fetch_array(mysql_query("select 'good' from zmail_member where id='$_POST[id]"));
if($q[0]=="good") @solve();
}
?>
<form method=post action=index.php>
<input type=text name=id maxlength=15 size=30>
<input type=submit>
</form>
</body>
</html>
$_POST 방식으로 id 값을 입력받고 몇가지 치환과 문자열을 자른다.
\\ -> ""
' -> ''
id 길이는 15자리로 제한되며 그 이상 입력하면 잘린다. 이 특징을 이용해 하나의 싱글쿼터가 두개로 치환되는데 그중 하나를 잘라버린다.
현재 쿼리가 select 'good' from zmail_member where id='$_POST[id] 이기 때문에 싱글쿼터로 닫아야한다.
따라서 admin ' 이라고 입력해주면 admin ''로 치환이 되지만 15자리 이상은 잘려서 쿼리안에는 아래와 같이 입력된다.
select 'good' from zmail_member where id='admin '
'WEB Hacking > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 46번 SQL 인젝션 CHAR() (0) | 2018.08.29 |
---|---|
[webhacking.kr] 18번 SQL 인젝션 (0) | 2018.08.29 |
[webhacking.kr] 26번 (0) | 2018.08.24 |
[webhacking.kr] 20번 (0) | 2018.08.24 |
[webhacking.kr] 24번 (0) | 2018.08.23 |