티스토리 뷰

WEB/webhacking.kr

Webhacking.kr - 26번 [100]

Notchicken 2017. 6. 21. 10:02

Webhacking.kr - 26번 [100]



<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 함수를 통해, get으로 받아온 id 값에 "admin" 이라는 단어가 있는지 확인하여 필터링 하는 것을 알 수 있다.

필터링을 거친 후, 받아온 id값을 URL Decode 하고 디코딩한 값이 "admin" 이면 된다.

admin 을 URL Encoding 하면, a= %61, d= %64, m= %6d, i= %69, n= %6e 이고,
%61%64%6d%69%6e를 get parameter 로 넘겨주었다.



하지만, 값이 넘어가면서 URL Decoding을 한번 거치기 때문에, id 값이 admin 이 되어 no! 가 뜨게 된다.
그래서, admin 을 URL Encoding한 %61%64%6d%69%6e 를 또 한번 인코딩 해주었다.

admin -> %61%64%6d%69%6e  -> %2561%2564%256d%2569%256e




한번 더 인코딩한 값을 id 값으로 넘겨주었더니 문제가 풀렸다.







'WEB > webhacking.kr' 카테고리의 다른 글

Webhacking.kr - 39번 [100]  (0) 2017.06.22
Webhacking.kr - 54번 [100]  (0) 2017.06.21
Webhacking.kr - 24번 [100]  (0) 2017.05.24
Webhacking.kr - 14번 [100]  (0) 2017.05.24
Webhacking.kr - 18번 [100]  (0) 2017.05.24
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday