<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>
eregi가 다시 등장했다!
문자열 필터링 함수!
admin이 있으면 안된다.
urldecode해서 admin이 되어야 한다.
id에 %61%64%6d%69%6e을 주면 안된다! 자동으로 decoding이 되어 eregi에 의해 필터링되기 때문이다.
이를 해결하기 위해 한번 더 인코딩을 해주는 것이다. 즉, %2561%2564%256d%2569%256e 를 넣어주면
디코딩되어 %61%64%6d%69%6e이 될 것이기 때문에 eregi에 의해 필터링되지 않는다.
다시 한번 urldecode가 일어나고 그러면 admin이 될 수 있다.
http://webhacking.kr/challenge/web/web-11/?id=%2561%2564%256d%2569%256e
'웹 해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 39번 (0) | 2018.02.09 |
---|---|
webhacking.kr 38번 (0) | 2018.02.09 |
webhacking.kr 24번 (0) | 2018.02.09 |
webhacking.kr 18번-SQL INJECTION (0) | 2018.02.07 |
webhacking.kr 16번 (0) | 2018.02.07 |