본문 바로가기
war game/웹 워게임(los)

load of sql injection troll

by 강깅꽁 2016. 9. 13.
반응형

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 정보를 보여준 다는 것