Wargame/웹해킹(Webhacking.kr)

[Webhacking.kr] 25번

2017. 9. 6. 23:03

들어가면 밑과 같은 내용과 hello world가 입력되있는 입력창이 있다.


합계 12 -rw-r--r-- 1 oldzombie users 12 5월 14 00:57 hello.txt -rw-r--r-- 1 oldzombie users 1158 9월 5 01:24 index.php -rw-r--r-- 1 oldzombie users 57 5월 14 00:57 password.php


주소를 보면 ?file=hello가 뒤에 붙어있는것을 알 수 있다.


아마 입력창에 보이는 저것이 hello.txt의 파일 내용일것이다.


그러므로 file=password로 해보면 뭔가 나오지 않을까 생각해서 바꿔보았으나 아무것도 일어나지않았다.


webhacking.kr/challenge/bonus/bonus-5/hello.txt 이렇게 들어가보니 hello.txt의 내용이 나왓다.

webhacking.kr/challenge/bonus/bonus-5/password.php로 들어가보니 아무것도 없었다.


음... 다시 원점으로 돌아와서 이 페이지는 file=파일명을 입력하면 파일의 내용을 보여주는 것같다.


재미있는 점은 입력창에 적힌걸 지우거나 수정하고 file=asdf 등을 url에 입력해도 hello.txt의 내용을 보여준다는 것이다.


그 말은 아마 default로 file에 없는 이름이 들어간 경우 hello.txt를 보여주는 것이 되는 것같다.

그런데 index나 password, password.php,index.php 를 입력해도 hello.txt를 보여준다.


거기다 맨 처음 설정되어잇는 file=hello에서 .txt를 안붙이고 파일 이름만 적혀있는 걸 보니


내부 동작에서 $file = $_GET[file].".txt" 같은 것으로 되어있는 것같다. 이게 아니라면 $file = $file+".txt"던지 어쨋든 뒤에 txt가 붙기 때문에 index.php나 password.php를 입력해도 뒤에 txt가 붙어서 디폴트로 계속 hello.txt가 출력되는것 같다.


문자는 NULL을 만나면 끝나므로 file=password.php%00 등을 입력하면 아마 뒤에 있는 ".txt"는 무시되어 password.php가 열리지 않을까 싶다. (%00은 인코딩된 NULL값이다)


webhacking.kr/challenge/bonus/bonus-5/?file=password.php%00


로 ?file=password.php%00를 입력해보았다.


Challenge 25 password is ~~nullbye2~~


라는 값이 입력창에 나왔다. 바로 auth로 인증하러가였다.


클리어

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

[Webhacking.kr] 27번  (0) 2017.09.06
[Webhacking.kr] 26번  (0) 2017.09.06
[Webhacking.kr] 24번  (0) 2017.09.06
[Webhacking.kr] 19번  (0) 2017.09.06
[Webhacking.kr] 18번 SQL INJECTION  (0) 2017.09.04

[Webhacking.kr] 24번

2017. 9. 6. 22:41

 

client ip

1**.***.***.***

agentMozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36


Wrong IP!


문제 내용은 저렇다.  (ip는 혹시 몰라서 모자이크 처리함)


소스보기를 해서 보니 주석으로 <!-- source : index.phps --> 와 같은 내용이 있었다. index.phps를 보자.



내용은 아래와 같다


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
42
43
44
45
46
<html>
<head>
<title>Challenge 24</title>
</head>
<body>
<?
 
extract($_SERVER);
extract($_COOKIE);
 
if(!$REMOTE_ADDR$REMOTE_ADDR=$_SERVER[REMOTE_ADDR];
 
$ip=$REMOTE_ADDR;
$agent=$HTTP_USER_AGENT;
 
 
if($_COOKIE[REMOTE_ADDR])
{
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
 
echo("<table border=1><tr><td>client ip</td><td>$ip</td></tr><tr><td>agent</td><td>$agent</td></tr></table>");
 
if($ip=="127.0.0.1")
{
@solve();
}
 
else
{
echo("<p><hr><center>Wrong IP!</center><hr>");
}
?>
 
 
 
<!--
source : index.phps
-->
 
</body>
</html>
cs


일단 코드를 분석하자.


extract() 함수는 배열 속의 키값을 변수화 시켜주는 함수이다. (http://php.net/manual/kr/function.extract.php)

extract(array) : array의 key값의 이름으로 변수를 만듬. 변수의 값은 key값에 대응하는 값. ex) extract($_COOKIE) => $REMOTE_ADDR = $_COOKIE['REMOTE_ADDR']


$_SERVER[REMOTE_ADDR] : 현재 페이지를 보고있는 시스템의 ip 주소

$_SERVER[HTTP_USER_AGENT] : 클라이언트의 접속 환경 정보(브라우저 정보 등)


그러므로 extract으로 변수들을 생성하고 $ip=$REMOTE_ADDR; 의 ip를 str_replace 함수를 거쳐서 ip값을 필터링시킨다.


필터링되는 값은 "12", "7." , "0." 으로 모두 "127.0.0.1"이라는 ip를 만드는데 방해하기 위해 사용된다.


일단 쿠키값 변조를 통해 REMOTE_ADDR 값으로 ip주소를 넣고 또 이값이 필터를 거쳐서 "127.0.0.1"이 되게 만들면 될것같다.


112277..00..00..1 이렇게 넣으면 필터를 거쳐서 127.0.0.1이 될 것같다.


EditThisCookie 툴을 이용해서 REMOTE_ADDR 이름의 쿠키를 만들고 값을 112277..00..00..1로 설정했다.




You have cleared the 24 problems.

Score + 100



문제가 풀렸다.


참고로 javascript를 이용해서도 쿠키변조가 가능하다.


javascript:alert(document.cookie="REMOTE_ADDR=112277..00..00..1");


아니면 크롬 개발자 도구에서 Console 창에서 javascript:document.cookie="REMOTE_ADDR=112277..00..00..1";를 입력하는 방법도 있다.


근데... 다른 쿠키값들이 다 변조되서 티스토리 로그아웃되는 등 곤란한점이 있다 ㅠ;

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

[Webhacking.kr] 26번  (0) 2017.09.06
[Webhacking.kr] 25번  (0) 2017.09.06
[Webhacking.kr] 19번  (0) 2017.09.06
[Webhacking.kr] 18번 SQL INJECTION  (0) 2017.09.04
[Webhacking.kr] 17번  (0) 2017.09.04

[Webhacking.kr] 19번

2017. 9. 6. 22:21

id :   


저렇게 있다. 제출을 누르면 you are not admin라고 나온다.


다른것을 입력하면 페이지가 이동됫다가 바로 다시 원래 문제 페이지로 돌아온다.


그래서 소스보기로 아이디를 제출하면 어떤 소스가 나오는지 알아보았다.


아이디를 제출햇을때 나오는 소스는 아래와 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
 
<html>
<head>
<title>Challenge 19</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
input { background:silver; color:black; font-size:9pt; }
</style>
</head>
<body>
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/hosting_users/webhacking/www/challenge/javascript/js6.html:11) in <b>/home/hosting_users/webhacking/www/challenge/javascript/js6.html</b> on line <b>29</b><br />
<meta http-equiv=refresh content=0;url=js6.html>
cs


중요한건 12번째 줄이다.

<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/hosting_users/webhacking/www/challenge/javascript/js6.html:11) in <b>/home/hosting_users/webhacking/www/challenge/javascript/js6.html</b> on line <b>29</b><br />


뭐라고 오류가 뜬다.


즉... 문제가 고장난듯 ㅠ;


나중에 고쳐지면 다시 풀어야겠다.

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

[Webhacking.kr] 25번  (0) 2017.09.06
[Webhacking.kr] 24번  (0) 2017.09.06
[Webhacking.kr] 18번 SQL INJECTION  (0) 2017.09.04
[Webhacking.kr] 17번  (0) 2017.09.04
[Webhacking.kr] 16번  (0) 2017.09.04

 



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

[Webhacking.kr] 6번

2017. 9. 3. 23:41

   HINT : base64  


index.phps

ID : guest
PW : 123qwe


index.phps의 내용을 보자


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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php 
if(!$_COOKIE[user]) 
    $val_id="guest"
    $val_pw="123qwe"
 
    for($i=0;$i<20;$i++
    { 
        $val_id=base64_encode($val_id); 
        $val_pw=base64_encode($val_pw); 
 
    } 
 
    $val_id=str_replace("1","!",$val_id); 
    $val_id=str_replace("2","@",$val_id); 
    $val_id=str_replace("3","$",$val_id); 
    $val_id=str_replace("4","^",$val_id); 
    $val_id=str_replace("5","&",$val_id); 
    $val_id=str_replace("6","*",$val_id); 
    $val_id=str_replace("7","(",$val_id); 
    $val_id=str_replace("8",")",$val_id); 
 
    $val_pw=str_replace("1","!",$val_pw); 
    $val_pw=str_replace("2","@",$val_pw); 
    $val_pw=str_replace("3","$",$val_pw); 
    $val_pw=str_replace("4","^",$val_pw); 
    $val_pw=str_replace("5","&",$val_pw); 
    $val_pw=str_replace("6","*",$val_pw); 
    $val_pw=str_replace("7","(",$val_pw); 
    $val_pw=str_replace("8",")",$val_pw); 
 
    Setcookie("user",$val_id); 
    Setcookie("password",$val_pw); 
 
    echo("<meta http-equiv=refresh content=0>"); 
?> 
 
<html
<head
<title>Challenge 6</title
<style type="text/css"> 
body { background:black; color:white; font-size:10pt; 
</style
</head
<body
 
<? 
 
$decode_id=$_COOKIE[user]; 
$decode_pw=$_COOKIE[password]; 
 
$decode_id=str_replace("!","1",$decode_id); 
$decode_id=str_replace("@","2",$decode_id); 
$decode_id=str_replace("$","3",$decode_id); 
$decode_id=str_replace("^","4",$decode_id); 
$decode_id=str_replace("&","5",$decode_id); 
$decode_id=str_replace("*","6",$decode_id); 
$decode_id=str_replace("(","7",$decode_id); 
$decode_id=str_replace(")","8",$decode_id); 
 
$decode_pw=str_replace("!","1",$decode_pw); 
$decode_pw=str_replace("@","2",$decode_pw); 
$decode_pw=str_replace("$","3",$decode_pw); 
$decode_pw=str_replace("^","4",$decode_pw); 
$decode_pw=str_replace("&","5",$decode_pw); 
$decode_pw=str_replace("*","6",$decode_pw); 
$decode_pw=str_replace("(","7",$decode_pw); 
$decode_pw=str_replace(")","8",$decode_pw); 
 
 
for($i=0;$i<20;$i++
    $decode_id=base64_decode($decode_id); 
    $decode_pw=base64_decode($decode_pw); 
 
echo("<font style=background:silver;color:black>&nbsp;&nbsp;HINT : base64&nbsp;&nbsp;</font><hr><a href=index.phps style=color:yellow;>index.phps</a><br><br>"); 
echo("ID : $decode_id<br>PW : $decode_pw<hr>"); 
 
if($decode_id=="admin" && $decode_pw=="admin"
    @solve(6,100); 
 
 
?> 
 
</body
</html
cs


오... ㅂㄷㅂㄷ

근데 뭐... 의외로 간단하네

    $val_id="guest"
    $val_pw="123qwe";

여기서 저 두개가 인코딩되서 나중에 디코드되서 적히는 거니까 

쿠키값 변조를 하면 되는구만~ ㅇㅋ


코드를 똑같이 배껴서 위 $val_id와 $val_pw를 admin으로 바꿔서 나온값을 쿠키변조시켜서 다시 보내면된다.

간단하군


admin을 넣은 결과 :

Vm0wd@QyUXlVWGxWV0d^V!YwZDRWMVl$WkRSV0!WbDNXa!JTVjAxV@JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll&U@tWVWJHaG9UVlZ$VlZadGNFSmxSbGw!VTJ0V!ZXSkhhRzlVVmxaM!ZsWmFjVkZ0UmxSTmJFcEpWbTEwYTFkSFNrZGpSVGxhVmpOU!IxcFZXbUZrUjA!R!UyMTRVMkpIZHpGV!ZFb$dWakZhV0ZOcmFHaFNlbXhXVm!wT!QwMHhjRlpYYlVaclVqQTFSMWRyV@&kV0!ERkZVbFJHVjFaRmIzZFdha!poVjBaT@NtRkhhRk&sYlhoWFZtMXdUMVF$TUhoalJscFlZbGhTV0ZSV@FFTlNiRnBZWlVaT!ZXSlZXVEpWYkZKRFZqQXhkVlZ!V@xaaGExcFlXa!ZhVDJOc@NFZGhSMnhUVFcxb@IxWXhaREJaVmxsM!RVaG9hbEpzY0ZsWmJGWmhZMnhXY!ZGVVJsTk&WMUo!VmpKNFQxWlhTbFpYVkVwV!lrWktTRlpxUm!GU@JVbDZXa!prYUdFeGNHOVdha0poVkRKT@RGSnJhR@hTYXpWeldXeG9iMWRHV@&STldHUlZUVlpHTTFSVmFHOWhiRXB*WTBac!dtSkdXbWhaTVZwaFpFZFNTRkpyTlZOaVJtOTNWMnhXWVZReFdsaFRiRnBZVmtWd!YxbHJXa$RUUmxweFVtMUdVMkpWYkRaWGExcHJZVWRGZUdOSE9WZGhhMHBvVmtSS!QyUkdTbkpoUjJoVFlYcFdlbGRYZUc&aU!XUkhWMjVTVGxOSGFGQlZiVEUwVmpGU!ZtRkhPVmhTTUhCNVZHeGFjMWR0U@tkWGJXaGFUVzVvV0ZreFdrZFdWa$B*VkdzMVYySkdhM@hXYTFwaFZURlZlRmR!U@s!WFJYQnhWVzB^YjFZeFVsaE9WazVPVFZad@VGVXlkREJXTVZweVkwWndXR0V^Y0ROV@FrWkxWakpPU!dKR!pGZFNWWEJ@Vm!0U!MxUXlUWGxVYTFwb!VqTkNWRmxZY0ZkWFZscFlZMFU!YVUxcmJEUldNalZUVkd^a!NGVnNXbFZXYkhCWVZHdGFWbVZIUmtoUFYyaHBVbGhDTmxkVVFtRmpNV!IwVTJ0a!dHSlhhR0ZVVnpWdlYwWnJlRmRyWkZkV@EzQjZWa@R*TVZZd0!WWmlla!pYWWxoQ!RGUnJXbEpsUm!SellVWlNhVkp!UW&oV!YzaHJWVEZzVjFWc!dsaGlWVnBQVkZaYWQyVkdWWGxrUkVKWFRWWndlVmt$V@&kWFIwVjRZMFJPV@!FeVVrZGFWM@hIWTIxS!IxcEhiRmhTVlhCS!ZtMTBVMU!^VlhoWFdHaFlZbXhhVjFsc!pHOVdSbXhaWTBaa@JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa@Q0YTFOR!ZuTlhiRlpYWWtoQ!NWWkdVa@RWTVZwMFVtdG9VRll&YUhCVmJHaERUbXhrVlZGdFJtcE&WMUl$VlRKMGExZEhTbGhoUjBaVlZucFdkbFl$V@&OT@JFcHpXa@R$YVZORlNrbFdNblJyWXpGVmVWTnVTbFJpVlZwWVZGYzFiMWRHWkZkWGJFcHNVbTFTZWxsVldsTmhWa$AxVVd^d!YySllVbGhhUkVaYVpVZEtTVk&zYUdoTk!VcFZWbGN^TkdReVZrZFdiR!JvVW&wc@IxUldXbmRsYkZsNVkwVmtWMDFFUmpGWlZXaExWMnhhV0ZWclpHRldNMmhJV!RJeFMxSXhjRWhpUm!oVFZsaENTMVp0TVRCVk!VMTRWbGhvV0ZkSGFGbFpiWGhoVm!^c@NscEhPV$BTYkhCNFZrY$dOVll^V@&OalJXaFlWa!UxZGxsV!ZYaFhSbFp&WVVaa!RtRnNXbFZXYTJRMFdWWktjMVJ!VG!oU@JGcFlXV$hhUm!ReFduRlJiVVphVm0xU!NWWlhkRzloTVVwMFlVWlNWVlpXY0dGVVZscGhZekZ$UlZWdGNFNVdNVWwzVmxSS0!HRXhaRWhUYkdob!VqQmFWbFp0ZUhkTk!WcHlWMjFHYWxacmNEQmFSV!F$VmpKS@NsTnJhRmRTTTJob!ZrUktSMVl^VG&WVmJFSlhVbFJXV!ZaR!l*RmlNV!JIWWtaV!VsZEhhRlJVVm!SVFpXeHNWbGRzVG!oU!ZFWjZWVEkxYjFZeFdYcFZiR@hZVm!^d!lWcFZXbXRrVmtwelZtMXNWMUl*YURWV0!XUXdXVmRSZVZaclpGZGliRXB&Vld0V!MySXhiRmxqUldSc!ZteEtlbFp0TURWWFIwcEhZMFpvV@sxSGFFeFdNbmhoVjBaV@NscEhSbGROTW!oSlYxUkplRk!^U!hoalJXUmhVbXMxV0ZZd!ZrdE&iRnAwWTBWa!dsWXdWalJXYkdodlYwWmtTR0ZHV@xwaVdHaG9WbTE0YzJOc!pISmtSM0JUWWtad0&GWlhNVEJOUmxsNFYyNU9hbEpYYUZoV@FrNVRWRVpzVlZGWWFGTldhM0I@VmtkNFlWVXlTa!pYV0hCWFZsWndSMVF^V@tOVmJFSlZUVVF$UFE9PQ==


이제 이 값을 이용해서 쿠키값을 변조하면 된다.




You have cleared the 6 problems.

Score + 100


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

[Webhacking.kr] 15번  (0) 2017.09.04
[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 4번 base64 & SHA1  (0) 2017.09.03
[Webhacking.kr] 2번 Blind SQL Injection  (0) 2017.09.03
[Webhacking.kr] 1번 index.phps  (0) 2017.08.31

문제

YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg==


음... 이게 다다.

일단 base64 디코딩을 해봣다.


결과 : c4033bff94b567a190e33faa551f411caef444f2


음... Password를 제출하는 칸이 있어서 저값을 넣고 해보았으나... 아무일도 없었다.


혹시 hex값일까 싶어.. python으로 decode('hex')해봤지만; 


;gUA라는 값(읽을수 있는)만 나왔다.


화나서 저 결과 그대로를 구글에 검색했다( ... 좋은 생각이 아니였던것같다)

그만 정답이 나와버렸다 허... 


문자수를 세어보면 40자리라는 것을 알수 있고, 이것은 SHA-1의 특징(40*4bit = 160bit)이다.

40*4bit = 160bit


 - sha1 란?

 

   sha1 는 단방향 암호의 한 종류로 Secure Hash Algorithm 라고 합니다.

   1993 년에 sha0가 고안되었다고 하며, 2년뒤에 sha1이 발표되었습니다.

   현재는 md5 와 같이 결함이 발견되어 보안용도로는 사용하지 않도록 권장하는 알고리즘입니다


위와 같다.


sha1은 이미 깨진지 오래라서 디코드해주는 사이트가 많다.

https://md5hashing.net/

https://hashkiller.co.uk/sha1-decrypter.aspx



한번 디코면 a94a8fe5ccb19ba61c4c0873d391e987982fbbd3가 나오고.. 한번 더 하면

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 SHA1 : test로 test가 나온다.


이제 test를 넣고 제출하면 성공

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

[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03
[Webhacking.kr] 2번 Blind SQL Injection  (0) 2017.09.03
[Webhacking.kr] 1번 index.phps  (0) 2017.08.31
[Webhacking.kr] 00. 가입  (0) 2017.08.31

+ Recent posts