뉴비에욤
필터링에 공백이 추가되었다. (공백을 URL Encoding 시키면 '%20'이 나옴) 쿼리에는 id값이 'guest' 로 고정되지만 클리어 조건은 'admin'인 것을 보아 goblin 문제랑 유사하다. 문제는 공백인데, sql injection을 연습할 때 가장 중요한 것은 필터링을 우회하는 것이다. 공백은 단순히 %20 뿐만 아니라 /**/, (), %0 등등 다르게 사용될 수 있는 것들이 무수히 많다. http://localhost/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php?pw=%27%0aor%0aid=%27admin%27%23
클리어 조건을 보면 드디어 'pw'를 체크하기 시작한다. 필터링은 별로 신경 쓸 만한 것은 없지만 이전 문제들과 다르게 blind sql injection 문제인 것을 알 수 있다. 중간에 공백 라인을 기준으로 위쪽 부분은 blind sql-inejction 값이 참이면 "Hello admin"을 출력하고, 최종적으로 입력한 'pw'가 올바르면 아래쪽 부분에서 "ORC CLEAR"를 출력할 것이다.
쿼리에서는 id 값이' guest'로 고정되어 실행되는데, 클리어 조건은 'admin'을 원하고 있다. no 파라미터 값을 2로 입력하면 "Hello guest"가 출력되는것으로 보아 admin의 no 값은 1로 추정할 수 있다. 그런데 no 파라미터 값을 1로 입력하면 논리 연산이 거짓으로 되고, no=2 or 1 로 입력하면 쿼리 결과가 'admin','guest' 둘 다 나오기 때문에 쿼리 결과의 개수를 제한시켜야 한다. http://localhost/goblin_e5afb87a6716708e3af46a849517afdc.php?no=2%20or%201%20limit%201,1