본문 바로가기

wargame/webhacking.kr

webhacking.kr 39번문제

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