DoR@Hee의 끄적끄적

webhacking.kr 27번 본문

WarGame/WebHacking.kr

webhacking.kr 27번

DoR@Hee 2019. 2. 19. 16:22


문제 첫화면 SQL 관련 문제인거같다. 



혹시 몰라서 소스코드를 해본 결과 index.php의 소스를 보여준다.


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
<html>
<head>
<title>Challenge 27</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get action=index.php>
<input type=text name=no><input type=submit>
</form>
<?
if($_GET[no])
{
 
if(eregi("#|union|from|challenge|select|\(|\t|/|limit|=|0x",$_GET[no])) exit("no hack"); //필터링
 
$q=@mysql_fetch_array(mysql_query("select id from challenge27_table where id='guest' and no=($_GET[no])")) or die("query error");
 
if($q[id]=="guest"echo("guest");
if($q[id]=="admin") @solve();
 
}
 
?>
<!-- index.phps -->
</body>
</html>
cs

 

해당 소스코드 이며 , 많은 sql 구문을 eregi로 필터링 하고있으며, 입력받은 no 값을 select id from challenge27_table where id='guest' and no=($_GET[no])을 이용해 sql구문을 입력하고있다.

select id from challenge27_table where id='guest' and no=(1)

select id from challenge27_table where id='guest' and no=(2) // and 구문으로 인해 guest는 admin이 아니거나 쿼리가 에러거나


=은 필터링하고있으니 like로 대신으나 query error이 떴다 생각해보면


select id from challenge27_table where id='guest' and no=(-1) or no like 2) exit("no hack");


f이런식으로 쿼리가 들어가기때문에 query error이 나타난거 였고 그에 따라서 마지막 ) 를 없애기 위해 

위 와 같이 쿼리문을 입력했다. #은 필터링하고있기때문에 --을 이용해서 필터링했다.


성공


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

webhacking.kr 29번  (0) 2019.02.20
webhacking.kr 28번  (0) 2019.02.20
webhacking.kr 26번  (0) 2019.02.19
webhacking.kr 25번  (0) 2019.02.19
webhacking.kr 24번  (0) 2019.02.19
Comments