Level 39
<? $pw="????"; if($_POST[id]) { $_POST[id]=str_replace("\\","",$_POST[id]); $_POST[id]=str_replace("'","''",$_POST[id]); $_POST[id]=substr($_POST[id],0,15); $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>
post방식으로 텍스트 박스에 입력한 문자열이 id파라미터에 담긴다.
박스에 입력값을 넣고 제출했더니 위와 같은 에러가 나타난다.
처음에는 문제가 고장난줄 알았으나, 소스코드를 살펴보니 당연한 것이였다.
select 'good' from zmail_member where id='$_POST[id]
소스코드를 살펴보면, $_POST[id] 오른쪽에 싱글쿼터(')가 없다.
따라서 마지막에 싱글쿼터를 넣어주면 될 것 같다.
그리고 str_replace를 이용해서 치환을 해주는데, 중요한점은 싱글쿼터(') 를 2개로 변경한다.
그리고나서 15자리까지만 잘라낸다.
substr을 이용해서 15자리번째에 싱글쿼터를 넣어서, 싱글쿼터가 2개로 치환되어도 1개까지만 쿼리문에 들어가도록 하면 될 것 같다.
id는 admin일 것이라고 추측해서 admin '
을 POST로 넘겨주었다.(admin:5글자, 공백:9개, 마지막 싱글쿼터)