문제
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?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>
|
cs |
풀이
브라우저에서 파라미터를 보내면, php는 파라미터를 기본적으로 디코딩해준다.
소스 코드를 보면, 파라미터를 받고 비교한 뒤, 한번 다시 디코딩을 진행한다.
그래서 디코딩을 두번 해주면, 기본적으로 디코딩을 한 번이 진행될 것이고, 코드에서 한번 더 진행돼서 최종적으로 admin을 넣을 수 있을 것이다.
%61%64%6D%69%6E를 한번 더 인코딩해주면
%2561%2564%256D%2569%256E가 된다.
파라미터로 넘겨주면 풀린다.
이미 풀어서 solved가 뜬다.
'WARGAME > webhacking.kr' 카테고리의 다른 글
webhacking.kr old-14 풀이 (0) | 2022.05.18 |
---|---|
webhacking.kr old-15 풀이 (0) | 2022.05.17 |
webhacking.kr old-6 풀이 (0) | 2022.05.17 |
webhacking.kr old-1 풀이 (0) | 2022.05.17 |