Juice Shop - User Credentials (★★★★) 풀이
Wargame | CTF/WebHacking

Juice Shop - User Credentials (★★★★) 풀이

SQL 인젝션을 통해서 모든 사용자의 계정정보를 조회하는 문제입니다. 이전 문제인 크리스마스 제품을 조회하는 문제에서 search에 파라미터를 넘겨주는 부분에서 SQL Injection 이 가능함을 확인하였습니다.

해당부분에 오류를 발생시키기 위해  ';  (싱글쿼터와 세미콜론) 을 넣어주었습니다. 서버에서 오류와 함께 SQL 문을 리턴해주었네요.

알아낸 SQL 문을 이용, 그리고 UNION 을 사용하여 Users 테이블을 조회하면 되는데요. 문제는 컬럼개수를 모른다는 것입니다. UNION 은 유니온하는 테이블의 컬럼 개수와 같아야 하는 조건이 필요합니다. 컬럼의 개수를 알기위해서는 테이블의 구조를 알아야 하는데, 구조를 알지 못하기 때문에 노가다가 필요합니다.

')) UNION SELECT '1','2' FROM Users-- 라는 식의 구문을 추가하여서 컬럼의 개수를 예측합니다. '1' 부터 계속 오류가 발생 하지 않을 때 까지 시도합니다.

계속 시도하다보니 '8' 에서 정상적으로 응답이 왔고, Product 정보를 저장하는 테이블의 컬럼의 개수는 8개라는 것을 알 수 있습니다.


우리가 알고 싶은 것은 사용자들의 계정정보이니, 아무필드를 email, password 로 바꿔주면 조회된 정보들이 상품정보에 유니온되어서 나타나게 됩니다.