본문 바로가기

----WARGAME----/Webhacking.kr

Webhacking.kr - 로그인 및 회원가입

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

최초 Webhacking.kr 워게임 사이트에 접속하면 다음과 같은 로그인 화면이 출력된다.

 

 

 

하지만, 화면에는 로그인을 위한 버튼 이외에 회원가입을 위한 버튼이 존재하지 않는다.

정보노출 취약점이 존재하는지 확인하여 회원가입을 위한 정보를 획득한다.

 ( * OTG-INFO-005, Review webpage comments and metadata for information leakage. )

 


이를 위해, 페이지를 우클릭하여 '페이지 소스 보기'를 실행한다.

 


 

페이지의 전체 소스는 다음과 같다.

 

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
<!DOCTYPE html>
<html>
<head>
    <link rel="shortcut icon" href="/favicon.ico" />
    <link rel="stylesheet" href="css/style.css">
    <title>Webhacking.kr - Oldzombie</title>
</head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi" />
<body bgcolor=black>
<center>
<br><br>
 
<div class=logo>
webhacking.kr
</div>
<br><br>
<br><br>
<font id=show1 class=logo2></font><br>
<font id=show2 class=logo2></font><br>
<form method=post action='index.html?enter=1' name=lf onkeypress=if(event.keyCode==13)go();>
<table border=0 align=center>
<tr><td colspan=3>
 
<script>
function go()
{
    if(lf.id.value=="") { lf.id.focus(); return; }
    if(lf.pw.value=="") { lf.pw.focus(); return; }
    lf.submit();
}
</script></tr></td>
 
<tr><td><input type=text name=id maxlength=20 style=background:black;color:green;yellow;font-size:15pt;width:200pt; onfocus=this.style.background='silver'; onblur=this.style.background='black'>
 
</td>
 
 
<td>
<!--
Register
===========================================
<input type=button value='Register' onclick=location.href='join/includ2_join__frm__0001.php?mode=44d3b9d66a3b8a75afd23917684ce39a' style=width:50pt;height:20pt;border:0;background:black;color:lightgreen></td></tr>
===========================================
-->
<tr><td colspan=2><br></td></tr>
<tr>
<td><input type=password name=pw maxlength=20 style=background:black;color:green;font-size:15pt;width:200pt;height:20pt; onfocus=this.style.background='silver'; onblur=this.style.background='black'></td>
<td><input type=button value='Login' onclick=go() style=width:50pt;height:20pt;border:0;background:black;color:yellow></td></tr>
</table>
</form>
<font id=show3 class=logo2></font><br>
<font id=show4 class=logo2></font><br>
 
 
</center>
<br><br><br><br><br>
<center>
<font color=gray size=2>Copyrightⓒ Oldzombie All Rights Reserved.</font>
</center>
 
<script src="js/script.js"></script>
<script>setTimeout('welcome();',10);</script>
 
 
<br><br><br><br><div align=right>
<br><br>
</div>
</center>
</body>
</html>
cs

 

 

소스를 확인하다보면 39행부터 'Register' 라는 설명과 함께 주석 처리된 내용이 있음을 확인할 수 있다.

 

39
40
41
42
43
44
<!--
Register
===========================================
<input type=button value='Register' onclick=location.href='join/includ2_join__frm__0001.php?mode=사용자별_다른_숫자_값' style=width:50pt;height:20pt;border:0;background:black;color:lightgreen></td></tr>
===========================================
-->
cs

 

 

두 가지 방법을 시도하여 볼 수 있다.
  1. HTML 소스에서 주석을 해제하여 버튼이 보이도록 하는 것.
  2. 소스에서 확인 가능한 주소를 직접 접근해 보는 것.


간단한 방법인 두 번째 방법으로 시도해 본다.

소스를 확인하면 Button 속성으로 'onclick'이 존재하며, 이는 버튼을 클릭했을때 수행되는 행동을 의미한다.
현재 버튼은 localtion.href를 통해 버튼을 클릭하면 "join/includ2_join__frm__0001.php?mode=사용자별_다른_숫자_값" 사이트로 이동한다.


따라서, 해당 정보를 이용하여 사이트를 웹 브라우저에 직접 입력하여 접근해본다.
http://webhacking.kr/join/includ2_join__frm__0001.php?mode=위 소스에서 확인된 값(사용자마다 상이)


사이트에 접속하면 아래와 같이 회원가입 기능을 볼 수 있다.


 

'decode me'라는 필드가 존재하는 것을 보아, 해당 값을 복호화해야 하는 것으로 유추할 수 있다.
다만, 어떠한 종류로 암호화되어 있는 것을 알 수 없기 때문에 base64 부터 시도해본다.
(혹시 값이 '=' 혹은 '=='로 끝나는 경우 base64의 패딩 기능으로 예측이 가능하다.)
https://www.base64decode.org/

 

 

'decode me'의 값을 넣고 복호화를 하면 아래와 같이 아직도 복호화된 값이 출력된다.

 


복호화된 결과를 다시 윗 칸에 넣고 복호화를 재시도한다.
이후에도 같은 과정을 반복하다보면, 아래와 같이 특정 IP가 결과값으로 출력된다.
(해당 값은 본인의 Public IP 값이다.)

 

 

 

결과 값으로 나온 IP를 복사하여 'decode me'에 넣고, 다른 값을 채워 회원가입을 시도한다.

 

 

 

가입이 완료되면 "Welcome to the Webhacking.kr" 라는 문구가 출력되며,
해당 정보로 로그인을 시도하면 다음과 같이 정상적으로 로그인 됨을 확인할 수 있다.

 

 

 

- 끝 -

 

출처 : warsolve.org, http://warsolve.org/w_webhacking.kr/ko-kr/level-0-login-and-register.aspx