<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

+ Recent posts