반응형
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
if(@ereg("admin",$_GET[id])) exit("HeHe");
$query = "select id from prob_troll where id='{$_GET[id]}'";
새로운 필터링 함수가 나왔다. ereg()이다.
이 함수가 admin이라는 문자열을 필터링하고 있기 때문에 이 함수의 우회방법이 있나 확인해보자.
이 함수는 null을 만나기 전까지의 문자들을 전부다 필터링한다.
즉 %00admin과 같이하면 admin은 null이후에 있기 때문에 필터가 되야 하지만 필터가 안된다.. 그 이유는 싱글쿼터를 preg_match에서 필터해주기 떄문이다.
또 다른 방법은 ereg는 대소문자를 구분하지 않는 다는 것이다. 따라서
id=Admin 과 같이 대문자를 섞게 되면 우회 가능
또 중요한 것은 mysql에서는 select * from prob_orc where id='aDMin' 다음과 같은 구문도 admin으로 인식하여 admin 정보를 보여준 다는 것