Level 42
test.txt파일과 test.zip 파일을 다운 받을 수 있게 되어 있다.
test.txt 파일에는 "test~"라는 문구만 들어있고, test.zip 파일 다운로드를 누르면 Access Deny라는 알림창만 뜨고 다운이 되지 않는다.
<html> <head> <title>Challenge 42</title> </head> <body> <table border=1 align=center width=300> <tr><td width=50>no</td><td>subject</td><td>file</td></tr> <tr><td>2</td><td>test</td><td>test.txt [<a href=?down=dGVzdC50eHQ=>download</a>]</tr> <tr><td>1</td><td>read me</td><td>test.zip [<a href=javascript:alert("Access%20Denied")>download</a>]</td></tr> </table> <!-- test.zip password is only numbers --> </body> </html>
소스코드를 살펴보면 test.zip파일은 파일의 경로가 하이퍼링크 된것이 아니고 알림창이 뜨게되어 있다.
그리고 힌트로 test.zip파일의 비밀번호는 숫자로만 되어 있다고 나와있다.
소스에서 test.txt파일의 하이퍼링크 주소에 주목했다. "dGVzdC50eHQ=" 라는 경로로 되어 있고, 딱봐도 base64로 인코딩 되어 있어 디코딩을 해보았다.
>>> import base64 >>> str="dGVzdC50eHQ=" >>> base64.decodestring(str) 'test.txt' >>> base64.encodestring("test.zip") 'dGVzdC56aXA=\n'
역시나 파일 이름이 base64로 인코딩 되어 있었고, 따라서 test.zip파일의 이름을 base64로 인코딩 하여 경로를 수정하여 test.zip파일을 얻을 수 있었다.
그리고 test.zip파일은 숫자로만 암호가 걸려 있다고 하여 zip Crack 툴을 이용하여 비밀번호를 얻어 내었다.
zip 파일의 비밀번호는 "852" 였으며 내용에는 "http://webhacking.kr/challenge/web/web-20/good.html" 경로가 담긴 txt파일이 들어 있다. 해당 경로에 가보면 인증 키값이 들어 있다.
flag : 123456789null0987654321