Login 버튼을 누르면 ID와 PASSWORD를 입력하라는 부분이 뜬다. Login으로 guest라는 id로 로그인해보았더니, admin이 아니라고 뜨는 것을 볼 수 있다. 그래서 Login으로 admin이라는 로그인 해보았다. Wrong Password라는 것을 확인할 수 있다. 먼저 admin으로 가입을 하고 나서 login 해야된다는 것을 짐작해 볼 수 있다.
JOIN 버튼을 누르면 Access deny가 뜨는 것을 볼 수 있다. Login 버튼을 누를때, /mem/login.php로 넘어가는 것을 보아, join은 /mem/join.php로 넘어가지 않을까 짐작해 url에 써 보았다. Join 페이지로 넘어갔지만, 아무것도 존재하지 않는다. 페이지 소스를 보면 가독성이 떨어지는 코드가 작성되어있는 것을 확인할 수 있었다. 분석해 보았더니, 다음과 같은 형태의 코드가 나왔다.
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
<script>
l ='a';
ll ='b';
lll ='c';
llll ='d';
lllll ='e';
llllll ='f';
lllllll ='g';
llllllll ='h';
lllllllll ='i';
llllllllll ='j';
lllllllllll ='k';
llllllllllll ='l';
lllllllllllll ='m';
llllllllllllll ='n';
lllllllllllllll ='o';
llllllllllllllll ='p';
lllllllllllllllll ='q';
llllllllllllllllll ='r';
lllllllllllllllllll ='s';
llllllllllllllllllll ='t';
lllllllllllllllllllll ='u';
llllllllllllllllllllll ='v';
lllllllllllllllllllllll ='w';
llllllllllllllllllllllll ='x';
lllllllllllllllllllllllll ='y';
llllllllllllllllllllllllll ='z';
I ='1';
II ='2';
III ='3';
IIII ='4';
IIIII ='5';
IIIIII ='6';
IIIIIII ='7';
IIIIIIII ='8';
IIIIIIIII ='9';
IIIIIIIIII ='0';
li ='.';
ii ='<';
iii ='>';
lIllIllIllIllIllIllIllIllIllIl = oldzombie;
lIIIIIIIIIIIIIIIIIIl =document.cookie;
if (eval(document.cookie).indexOf(oldzombie) ==-1) {
밑에 보면 form 형태로 id와 pw가 post로 넘겨주면 회원가입이 되는 것을 볼 수 있었다. 이 form을 console에 만들어주었다. admin이라는 id를 만들어 보냈더니 이미 만들어져있닥고 되어있다. 그래서 'admin ' 뒤에 널값을 추가해서 보내주었더니 signup 된 페이지가 뜨면서 제대로 회원가입이 되었다는 것을 확인할 수 있다. 그 다음에 login 페이지로 돌아가서 만든 id를 이용해서 'admin'으로 비밀번호는 아까 만든 1234로 넣어 로그인 해보았더니 문제가 풀렸다.
login.php 에서는 코드가 다 보이지 않지만, 짐작으로 쿼리를 select id from tabale_name where pass='~' 로 찾아서 나온 결과값이 id가 admin인 경우를 찾는 것으로 짐작해 볼 수 있다. join에서 만든 pass에서 나온 값인 id는 'admin '으로 약간 다르지만, 필터링 되기 때문에 문제가 풀리는 것이다.