분류 전체보기

 



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

[Webhacking.kr] 17번

2017. 9. 4. 23:20

또 체크 하나만 있다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>
<head>
<title>Challenge 17</title>
</head>
<body bgcolor=black>
<font color=red size=10></font>
<p>
<form name=login>
<input type=passwd name=pw><input type=button onclick=sub() value="check">
 
 
</form>
 
 
 
<script>
 
unlock=100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10-100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+9999999999;
 
function sub(){ if(login.pw.value==unlock){ alert("Password is "+unlock/10); }else { alert("Wrong");  }}
</script>
 
cs


소스를 보자.


계산만 하면 될듯...


그냥 js로 저거 복사해서 코드 돌리면 될듯


9997809307가 답이다.


Password is 999780930.7


굿굿 인증하러가자



클리어


+ 2018-03-22 추가


chrome의 개발자도구를 이용해 간단히 계산 가능하다.


unlock 부분을 복사해 Console에서 그대로 붙여넣기를 해주면 결과값을 아래에 보여준다.


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

[Webhacking.kr] 19번  (0) 2017.09.06
[Webhacking.kr] 18번 SQL INJECTION  (0) 2017.09.04
[Webhacking.kr] 16번  (0) 2017.09.04
[Webhacking.kr] 15번  (0) 2017.09.04
[Webhacking.kr] 14번  (0) 2017.09.04

[Webhacking.kr] 16번

2017. 9. 4. 23:01

* * *



이게 문제인가?


키를 누르면 별이 막 늘어난다.


마우스를 가져다 내면 별이 막 지워진다.


소스를 보자



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
 
<html>
<head>
<title>Challenge 16</title>
<body bgcolor=black onload=kk(1,1) onkeypress=mv(event.keyCode)>
<font color=silver id=c></font>
<font color=yellow size=100 style=position:relative id=star>*</font>
<script
document.body.innerHTML+="<font color=yellow id=aa style=position:relative;left:0;top:0>*</font>";
 
function mv(cd)
{
kk(star.style.posLeft-50,star.style.posTop-50);
if(cd==100) star.style.posLeft=star.style.posLeft+50;
if(cd==97) star.style.posLeft=star.style.posLeft-50;
if(cd==119) star.style.posTop=star.style.posTop-50;
if(cd==115) star.style.posTop=star.style.posTop+50;
if(cd==124location.href=String.fromCharCode(cd);
}
 
 
function kk(x,y)
{
rndc=Math.floor(Math.random()*9000000);
document.body.innerHTML+="<font color=#"+rndc+" id=aa style=position:relative;left:"+x+";top:"+y+" onmouseover=this.innerHTML=''>*</font>";
}
 
</script>
</body>
</html>
 
 
 
cs


mv함수가 키를 누르면 발생하고 이 키 코드값이 중요한것 같다.


Key Code Reference Table

5026070f80p90z
51361=+71g81q91Windows
5246272h82r92
5356373i83s93Right Click
5466474j84t94
55765a75k85u95
56866b76l86v960 (Num Lock)
57967c77m87w971 (Num Lock)
5868d78n88x982 (Num Lock)
59;:69e79o89y993 (Num Lock)
1004 (Num Lock)110. (Num Lock)120F9130140
1015 (Num Lock)111/ (Num Lock)121F10131141
1026 (Num Lock)112F1122F11132142
1037 (Num Lock)113F2123F12133143
1048 (Num Lock)114F3124134144Num Lock
1059 (Num Lock)115F4125135145Scroll Lock
106* (Num Lock)116F5126136146
107+ (Num Lock)117F6127137147
108118F7128138148
109- (Num Lock)119F8129139

149

키값은 대충 이렇다.


100 : 4 (Num Lock)

97 : 1 (Num Lock)

119 : F8

115 : F4

124 : |


음... |를 누르니까 답이 나왔다. 124

Password is webhacking.kr


클리어

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

[Webhacking.kr] 18번 SQL INJECTION  (0) 2017.09.04
[Webhacking.kr] 17번  (0) 2017.09.04
[Webhacking.kr] 15번  (0) 2017.09.04
[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03

[Webhacking.kr] 15번

2017. 9. 4. 23:01

들어가려하니 Access_Denied 이 뜬다. 50점인걸 보면 쉬울텐데 ㅇㅇ;


소스를 보자.


view-source:http://webhacking.kr/challenge/javascript/js2.html


이렇게 볼수있다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
 
<html>
<head>
<title>Challenge 15</title>
</head>
<body>
<script>
alert("Access_Denied");
history.go(-1);
document.write("password is off_script");
</script>
</body>
 
cs




뭐야... password is off_script


바로 인증하러가자.




클리어

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

[Webhacking.kr] 17번  (0) 2017.09.04
[Webhacking.kr] 16번  (0) 2017.09.04
[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03
[Webhacking.kr] 4번 base64 & SHA1  (0) 2017.09.03

[Webhacking.kr] 14번

2017. 9. 4. 22:44
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
 
<html>
<head>
<title>Challenge 14</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<br><br>
<form name=pw><input type=text name=input_pwd><input type=button value="check" onclick=ck()></form>
<script>
function ck()
{
var ul=document.URL;
ul=ul.indexOf(".kr");
ul=ul*30;
if(ul==pw.input_pwd.value) { alert("Password is "+ul*pw.input_pwd.value); }
else { alert("Wrong"); }
}
 
</script>
 
 
</body>
</html>
 
cs



이게 소스다. 


ck()함수는 check를 눌렀을때 일어나는 함수다.

<form name=pw><input type=text name=input_pwd><input type=button value="check" onclick=ck()></form>


그리고 ck의 기능은 url에서 ".kr"의 위치를 찾아서 그 위치값을 반환한다. // .indexOf(".kr")

(S.indexOf(target) 함수는 스트링(S)안에서 target의 값을 찾아 그 위치값을 반환하는 함수이다)


반환되는 값은 17이고 이것에 30을 곱하면 510이다


510을 입력하면 답이 나온다.


Password is 260100


Challenges - Auth에서


Auth에 입력햇더니 클리어가 나왔다.


+ 2018-03-22 추가


계산이 귀찮은 사람들을 위한 크롬의 개발자 도구! 너무 편리한 것같은데..





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

[Webhacking.kr] 16번  (0) 2017.09.04
[Webhacking.kr] 15번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03
[Webhacking.kr] 4번 base64 & SHA1  (0) 2017.09.03
[Webhacking.kr] 2번 Blind SQL Injection  (0) 2017.09.03

2017. 9. 4. 22:21

5

2017. 9. 4. 22:20

4

2017. 9. 4. 22:20

3

2017. 9. 4. 22:19

2

2017. 9. 4. 22:15

+ Recent posts