[문제]
This lab contains a SQL injection vulnerability in the product category filter. When the user selects a category, the application carries out a SQL query like the following:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
To solve the lab, perform a SQL injection attack that causes the application to display one or more unreleased products.
[풀이]
이 랩의 목표는 SQL injection을 활용하여 미출시 제품을 노출 시키는 것이다
취약점 코드에선 category 파라미터를 입력값 검증 없이 SQL에 이어붙이기 때문에 SQL 인젝션이 가능한 것을 확인 할 수 있다
가장 먼저 SQL injection을 활용하기 위해 버프 수위트 브라우져에서 카테고리 필터의 요청을 가로 챘다

아래와 같이 요청 결과를 확인 해보면 문제의 코드와 같이 category 파라미터가 SQL 쿼리에 그대로 삽입되는 것을 알 수 있다

서버에서는 GET /filter?category=Gifts HTTP/2 값을 받아와 SELECT * FROM products WHERE category = 'Gifts' AND released = 1 과 같은 코드를 생성한다
이 코드를 Gifts' OR 1=1-- 을 사용하여 우회 해주면 미출시 상품들을 확인 할 수 있을 것 이다
( AND released = 1 를 주석( --)을 통해 우회하기 때문이다)
버프 수위트 리피터로 요청을 보낸 결과 200 OK 응답을 받았으며 응답 본문에 미출시 상품을 포함한 모든 상품이 노출되는 것을 확인했다


'PortSwigger_SQL' 카테고리의 다른 글
| Lab: SQL injection vulnerability allowing login bypass (0) | 2026.02.24 |
|---|