kangsecu's B1og

[webhacking.kr] pro 49 문제풀이 본문

Web Hacking/webhakcing.kr

[webhacking.kr] pro 49 문제풀이

Kangsecu 2018. 2. 24. 02:41

[webhacking.kr] pro 49 문제를 풀어보도록 하겠습니다.

이번에도 SQL INJECTION입니다. 코드를 확인해보도록 하겠습니다. 

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
31
32
33
34
35
36
37
38
39
40
41
<html>
<head>
<title>Challenge 49</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get action=index.php>
level : <input name=lv value=1><input type=submit>
</form>
<?
if(time()<1258110000exit();
 
if($_GET[lv])
{
if(eregi("union",$_GET[lv])) exit();
if(eregi("from",$_GET[lv])) exit();
if(eregi("select",$_GET[lv])) exit();
if(eregi("or",$_GET[lv])) exit();
if(eregi("and",$_GET[lv])) exit();
if(eregi("\(",$_GET[lv])) exit();
if(eregi("\)",$_GET[lv])) exit();
if(eregi("limit",$_GET[lv])) exit();
if(eregi(",",$_GET[lv])) exit();
if(eregi("/",$_GET[lv])) exit();
if(eregi("by",$_GET[lv])) exit();
if(eregi("desc",$_GET[lv])) exit();
if(eregi("asc",$_GET[lv])) exit();
if(eregi("cash",$_GET[lv])) exit();
if(eregi(" ",$_GET[lv])) exit();
if(eregi("%09",$_GET[lv])) exit();
 
$q=@mysql_fetch_array(mysql_query("select id from members where lv=$_GET[lv]"));
 
echo($q[0]);
if($q[0]=="admin") @solve();
 
}
?>
<!-- index.phps -->
</body>
</html>
cs

엄청 많이 필터링합니다. 그리고 결국은 admin이 들어가야합니다. 이제 해보도록 하겠습니다.


Exploit 

앞에 쿼리를 거짓으로 만들기 위하여 2를 입력하고  or이 필터링이 되어서 ||로 우회했습니다.  2||id=admin 이러한 쿼리를 전송했는데, 안됬습니다. 그래서 admin을 hex값으로 변경해서 전송했습니다.


webhacking.kr pro 49 Clear!