
가장 먼저 필터링 기능이 눈에 들어왔다.

위와 같이 파라미터로 필터링을 조회하는 듯하다. 해당 부분에 SQLi가 수행되는지 확인해 보자.
‘ OR 1=1을 입력했더니 아래와 같이 출력되며 문제가 풀이됐다./filter?category='%20OR%201%3d1%20--

문제 설명을 본다면 더 자세히 까닭을 알 수 있는데.
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
서버는 위와 같은 쿼리를 사용한다고 나와 있다.
아마도 URL 파라미터가 별도의 필터링 없이 바로 쿼리문으로 들어가는 상황일 것이므로
‘ OR 1=1을 입력한다면, 아래와 같은 쿼리가 되어 버린다.SELECT * FROM products WHERE category = '' OR 1=1 -- AND released = 1
-- 때문에 -- AND released = 1은 주석 문장이 되어 버리며 '' OR 1=1은 항상 TRUE가 된다. 이러한 까닭으로 위 쿼리는 아래와 같아지며,SELECT * FROM products;
해당 테이블의 모든 요소를 반환하게 된다.
