Juice Shop - Christmas Special(★★★★) 풀이
Wargame | CTF/WebHacking

Juice Shop - Christmas Special(★★★★) 풀이

현재는 프론트 엔드단에 없는 크리스마스 제품을 주문하라는 것입니다. 

프론트 엔드단에는 없는데 주문하라는 말은, 데이터베이스에는 있으나 WHERE 절의 조건에 의해서, 메인화면의 상품을 뿌려줄 때 안보이게 했다고 유추해볼 수 있습니다. 메인화면을 받아올때, GET 방식으로 사진같이 받아옵니다. 

임의로 q라는 파라미터로 apple을 넘기니 apple이 포함된 상품들이 반환되어 나오는것을 확인하였습니다. 프론트엔드단의 검색기능이라고 보면 됩니다. q라는 파라미터로 전달된 값이 where 절에 들어가서 검색이 된다고 생각 할 수 있습니다. 여기에다가 SQL 인젝션을 시도해보겠습니다. 

'; 라는 파라미터를 넘겨주어서 데이터베이스 오류를 발생시켰더니 서버에서 요청된 SQL 문 전체를 반환하였네요. 상품들을 요청하는 쿼리는 SELECT * FROM Products WHERE (( name LIKE '%입력값%' OR description LIKE '%입력값%') AND deletedAt IS NULL ) ORDER BY name 입니다. 여기서 인젝션을 통해서 Products 테이블의 전체값을 받아오면 됩니다. 

파라미터로 '))-- 를 넘겨주면 SELECT * FROM Products WHRER (( name LIKE '%'))--%' OR .....   가 되면서 모든 Products의 테이블의 레코드가 나오게 됩니다. 

10번의 id를 가진 물품이 크리스마스 물품이네요. 이제 주문만 하면 끝입니다.

주문을 하고, ProductId를 10번으로 조작합니다.

크리스마스 물품이 제대로 장바구니에 들어갔습니다.

주문까지 완료하였습니다.