336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
webhacking.kr 39번문제
http://webhacking.kr/challenge/bonus/bonus-10/
접속하게되면 이런화면이다.
아무값이나 처보자
에러가뜬다
힌트를 얻기위해
http://webhacking.kr/challenge/bonus/bonus-10/index.phps 로접속해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <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); $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> | cs |
접속하니 코드는 위와같다.
입력을받으면 정규식을이용해 필터처리를하게되는데
입력한부분에 \\가 들어가면 없애버리고
(')를치면 ('') ' 두개로 바꿔버린다
그리고
$q=mysql_fetch_array(mysql_query("select 'good' from zmail_member where id='$_POST[id]"));
이부분을 보게되면 '가 재대로 닫히지 않을것을 볼수가있다.
그리고 마지막으로
<input type=text name=id maxlength=15 size=30>
이코드를보면 입력글자는 최대가 15글자이다.
여기서 힌트를얻을수가있다
'는 ''두개로 필터를해버리니
마지막 15번째칸에 '를 넣게되면
'는 ''로바뀌고
15번째도 '
16번쨰도 ' 이런식으로된다
하지만 데이터는 15자리까지만 가져가니
16번째는 버려지고 15자리에 '까지만 가져가게되는것이다.
실제로 '를 재대로 닫지않은채 운영하는곳은없지만
저런식으로 필터 처리하면 위험하다는것을 보여주는 문제인거같다.
'wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 16번문제 (0) | 2017.12.17 |
---|---|
webhacking.kr 24번문제 (0) | 2017.12.11 |
webhacking.kr 17번문제 (0) | 2016.12.12 |
webhacking.kr 1번문제 (0) | 2016.12.11 |
webhacking.kr 14번문제 (0) | 2016.12.11 |