Web Hacking/Webhacking.kr

[Webhacking.kr] challenge{old-26}

ruming 2021. 7. 22. 19:59

아무것도 없는 화면에 소스코드만 뜬다.

 

소스코드

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

 

이 부분을 보자.

<?php
  if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
  $_GET['id'] = urldecode($_GET['id']);
  if($_GET['id'] == "admin"){
    solve(26);
  }
?>

id값으로 admin이 들어가야 문제가 풀린다. admin을 필터링하고 있기 때문에 그대로 넣을 수는 없다.

그리고 urldecode 함수도 사용해 다시 저장하는 것을 볼 수 있다.

 

id=admin을 그대로 보내면 당연히 no!가 뜨고,

 

url인코딩을 해서 보내도 no!가 뜬다.

?id=%61%64%6D%69%6E

자동으로 디코딩이 되어 admin으로 바뀌는 것을 볼 수 있다.

 

여기서 한번 더 url인코딩을 하면 될 것 같다.

?id=%2561%2564%256D%2569%256E

 

문제를 해결할 수 있었다.

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

[Webhacking.kr] old-17  (0) 2021.09.20
[Webhacking.kr] old-05  (0) 2021.09.12
[Webhacking.kr] old-46  (0) 2021.09.12
[Webhacking.kr] Challenge{old-02}  (0) 2021.07.22
[Webhacking.kr] Challenge{old-01}  (0) 2021.07.22