DoR@Hee의 끄적끄적

webhacking.kr 39번 본문

WarGame/WebHacking.kr

webhacking.kr 39번

DoR@Hee 2019. 2. 24. 17:14


문제 첫화면 먼가 제출하는 느낌이다. 




1를 넣었을 때 mysql_fetch_array()이 보이며 문법이 틀린거 같다. 

그래서 소스보기를 한 결과 



index.phps가 보인다. 




그 중 mysql_fetch_array 에 '(싱글쿼터) 가 빠져있는것이 보이며, 



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]) //전달받은 id 값이 존재 할 경우
{
$_POST[id]=str_replace("\\","",$_POST[id]); // \\는 공백으로
$_POST[id]=str_replace("'","''",$_POST[id]); // '는 ''으로 치환한다.
$_POST[id]=substr($_POST[id],0,15); // substr은 문자열을 자르는 함수이며 0번째부터 15번째까지 자르고다.잇
$q=mysql_fetch_array(mysql_query("select 'good' from zmail_member where id='$_POST[id]")); // 그 결과값 $_POST[id]를 query에 
 
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



해당 소스코드이고 해석은 주석을 달아 놓았다. 


good이라는 문자열이나타나야하고 또한 '를 닫아줘야하니 위와 같이 문자열을 입력 후 제출을 눌러보았다. 


아무런 오류가 안나타났다.


select 'good' from zmail_member where id='goodasdasdasda'"


위와 같이 쿼리가 들어가는 이유는

1. $_POST[id]=str_replace("'","''",$_POST[id]);

2.$_POST[id]=substr($_POST[id],0,15);


와 관련이 있다는것을 확인 할 수있다.

goodasdasdasda' 이런식으로 쿼리가 들어갈 경우

goodasdasdasda" 이런식으로 치환이 되고

0~15문자열까지 자르기 때문에 "(더블쿼터)는 '(싱글쿼터)로 잘린다 

즉 쿼리는 이런식으로 들어간다. goodasdasdasda'

즉 위와같이 쿼리가 들어간다는것을 알 수 있었고




그럼 문자열 대신 공백으로 

good       '를 입력하면


성공


'WarGame > WebHacking.kr' 카테고리의 다른 글

webhacking.kr 42번  (0) 2019.02.25
webhacking.kr 41번  (0) 2019.02.25
webhacking.kr 38번  (0) 2019.02.24
webhacking.kr 8번  (0) 2019.02.23
webhacking.kr 37번  (0) 2019.02.22
Comments