SQL INJECTION

RESULT


index.phps



이렇다. 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 18</title
<style type="text/css"> 
body { background:black; color:white; font-size:10pt; } 
input { background:silver; } 
{ color:lightgreen; 
</style
</head
<body
<br><br
<center><h1>SQL INJECTION</h1
<form method=get action=index.php
<table border=0 align=center cellpadding=10 cellspacing=0
<tr><td><input type=text name=no></td><td><input type=submit></td></tr
</table
</form
<a style=background:gray;color:black;width:100;font-size:9pt;><b>RESULT</b><br
<? 
if($_GET[no]) 
{ 
if(eregi(" |/|\(|\)|\t|\||&|union|select|from|0x",$_GET[no])) exit("no hack"); 
$q=@mysql_fetch_array(mysql_query("select id from challenge18_table where id='guest' and no=$_GET[no]")); 
if($q[0]=="guest") echo ("hi guest"); 
if($q[0]=="admin") 
{ 
@solve(); 
echo ("hi admin!"); 
} 
} 
?
</a
<br><br><a href=index.phps>index.phps</a
</cener
</body
</html
cs


1을 입력하면 hi guest가 나온다.


오...ㅇ..오...; 어렵다;; 나한테는 이런 문제가 처음이라


일단 분석


no을 get형식으로 입력받아서 실행된다.


eregi를 사용하여 no을 입력받았을때 이 안에서 필터링하여 만약 no안에


공백, / , \( , \), \t , | , &, union, select, from, 0x 등이 있으면 exit함수로 종료된다.



여기서 sql문에서 id가 guest이고 no=1인 id는 guest이다.

그러므로 대충 2가 admin이라 예상하고 진행하면


id=guest and no=3 or no=2 로 넣는다하면


id가 게스트고 no가 3 이거나 no=2 인 id를 불러온다.

=> (id=guest and no=3) or no=2 으로 앞에 보이는 괄호안의 연산이 먼저 시행된다.


or을 이용하자.


근데.. eregi때문에 공백이 필터되므로 공백을 우회해야한다.


공백 우회로는 \t 이나 \n이 있는데 \t는 필터링되므로 \n을 이용하자 (공백우회(%20)로는 Tab(%09)이용 / Line Feed(%0a) 이용 / Carrage Return(%0d) 이용 / 주석(/**/) 이용 / 괄호() 이용 / AND(&&)나 OR(||) 이용 등등)


\n을 url인코딩한것은 %0a이다.


3 or no=2

=> 3%0aor%0ano=2


url : http://webhacking.kr/challenge/web/web-32/index.php?no=3%0aor%0ano=2



Congratulation!

You have cleared the 18 problems.

Score + 100


'Wargame > 웹해킹(Webhacking.kr)' 카테고리의 다른 글

[Webhacking.kr] 24번  (0) 2017.09.06
[Webhacking.kr] 19번  (0) 2017.09.06
[Webhacking.kr] 17번  (0) 2017.09.04
[Webhacking.kr] 16번  (0) 2017.09.04
[Webhacking.kr] 15번  (0) 2017.09.04

+ Recent posts