아무것도 없는 화면에 소스코드만 뜬다.
소스코드
<?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 |