< 해결 과정 >
그림1 에서 볼 수 있듯이 sql 문이나, 공백과 관련된 문자들이 필터링 되고 있다. %20이나+도 필터링이 된다. 그래서 아래와 같은 injection 코드는 필터링 되어 no hack 문구가 보여진다.
?no=%27%27or%20id=%27admin%27--
그림2 는 injection에 성공한 것을 볼 수 있는데, 사용된 코드는 아래와 같다.
no=%27%27or%0aid=%27admin%27--
주어진 PHP 코드를 자세히 보아야 하며, 특히 쿼리문자(%27)을 몇개 사용해야 하는지 주의해야 할 것 같다. 필자는 공백문자의 필터링을 %0a로 우회하였다. ( %0a는 url 상에서 사용이 되는 우회 기법이다. )
한줄 평: php 코드 좀.. 꼼꼼하게 보자