문제를 클릭하면 아무것도 없고 view-source만 있습니다. 소스를 보도록 합니다.

 

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

 

 GET 방식으로 id 값을 넘겨 받고 해당 값이 admin이면 no! 를 출력하며 끝납니다. 하지만 admin이 아닐경우 id에 id값을 URL 디코딩하여 다시 넣어주고 해당 값이 admin이면 solve를 호출합니다. 그래서 admin을 URL인코딩해서 넘기면 되는데.. 해보시면 아시겠지만 그냥 admin으로 인식해버려서 no! 가 출력되버립니다. 즉, id값을 처음 검증할때 이미 한번 디코드한다는 뜻이니 인코딩을 2번하면 됩니다.

 

%61%64%6D%69%6E -> URL decode -> admin -> 첫번째 조건문에 걸림 -> no!

%2561%2564%256D%2569%256E -> URL decode -> %61%64%6D%69%6E -> 첫번째 조건문 패스 -> URL decode -> admin

'Web Hacking > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-06  (0) 2019.10.29
[Webhacking.kr] old-54  (0) 2019.10.22
[Webhacking.kr] old-25  (0) 2019.10.22
[Webhacking.kr] old-24  (0) 2019.10.22
[Webhacking.kr] old-17  (0) 2019.10.22

+ Recent posts