반응형

webhacking.kr 문제 풀이 / Challenge(old) - 26번 문제 (100)

아래 코드를 보면 두번째 php 코드가 중요해 보입니다. 

$_GET['id']가 /admin/ 패턴일 경우에는 "no!"를 출력하고 종료됩니다. 

urldecode($_GET['id']) 함수로 반환된 문자열이 "admin"이면 solve() 함수를 call하게 됩니다. 

urldecode($_GET['id']) 함수가 "admin"이 반환할 수 있도록 "admin"을 url로 인코딩하여 입력해 보겠습니다. 

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

 

url 코드는 아래 표를 이용해보겠습니다. 

admin은 url 코드로 %61%64%6d%69%6e인데, 이 값을 입력해보겠습니다.

%61%64%6d%69%6e를 입력해도 preg_match()함수에서 디코딩 되어 "no!"를 출력하는 것으로 보입니다. 

%61%64%6d%69%6e를 한번 더 인코딩해서 입력해 보도록 하겠습니다.

 

%61%64%6d%69%6e를 인코딩하면, %2561%2564%256d%2569%256e 이 됩니다. 

이 값을 넣어보도록 하겠습니다.

그러면 100점을 획득한 것을 볼 수 있습니다.

 

반응형

+ Recent posts