<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

+ Recent posts