<html>
<head>
<title>Challenge 26</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
a { color:lightgreen; }
</style>
</head>
<body>
<?
if(eregi("admin",$_GET[id])) { echo("<p>no!"); exit(); }
$_GET[id]=urldecode($_GET[id]);
if($_GET[id]=="admin")
{
@solve(26,100);
}
?>
<br><br>
<a href=index.phps>index.phps</a>
</body>
</html>
위 소스코드를 보면 id 파라미터를 $_GET 방식으로 받아 eregi 함수로 패턴을 검사한다. 이때, 전달받은 값이 "admin" 이라면 종료하고
아니면 urldecode 함수로 디코딩한다. eregi 함수를 우회하면 되는데 admin을 인코딩하면 %61%64%6d%69%6e 이다.
하지만 $_GET 방식이나 $_REQUEST로 서버가 전달받으면 자동으로 디코딩작업을 해준다. 결국 admin을 받아서 필터처리된다.
따라서 %까지 인코딩해서 보내야한다. %2561%2564%256d%2569%256e
'WEB Hacking > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 18번 SQL 인젝션 (0) | 2018.08.29 |
---|---|
[webhacking.kr] 39번 SQL 인젝션 (0) | 2018.08.28 |
[webhacking.kr] 20번 (0) | 2018.08.24 |
[webhacking.kr] 24번 (0) | 2018.08.23 |
[webhacking.kr] 23번 (0) | 2018.08.23 |