[SQL Injection] 사전 검색 기법

 사전 검색 기법 


사전 검색을 사용하는 경우

이진 검색 알고리즘은 테이블과 칼럼 명 스키마 객체를 조회 할 때 사용가능한 기법입니다 . 

그러나 데이터베이스에서 스키마 객체 조회 수단을 제공 하지 않을 경우 테이블과 칼럼의 객체명을 알 수 없기 때문에 SQL 인젝션 취약점이 발생하더라도 데이터 획득은 불가능합니다 . 

=> "이렇게 스키마 객체를 통한 조회기능을 제공하지 않거나 차단되어 있는 경우에 사용하는 방법이 사전 검색 기법입니다 . "


사전 검색의 사용

db에 어떤 테이블이 있는지 알 수 없기 때문에 가능성이 높은 테이블을 리스트화 해서 하나씩 SQL 쿼리로 대입해보는 방법입니다 . 
 

>> (select count(*) from [dictionary_word]) > 0



테이블 명이 없다면 에러가 발생하고 있다면 1 또는 0 값이 출력 될것입니다 . 


먼저 사전검색 기법을 이용하여 "Member" 테이블이 존재하는지 검색하는 방법을 알아보겠습니다
 

>> select case when (select count(*)from Member)>0 then 1 else 0 end ;

 



존재하지 않는 테이블이기 때문에 에러메세지를 출력합니다





Employees 테이블의 존재 여부를 검색해보겠습니다

>> select case when (select count(*)from Employees)>0 then 1 else 0 end ;









테이블이 존재하며 레코드가 1개 이상이기 때문에 1이 출력됩니다 . 


스키마 객체 뷰를 제공하지 않는 환경에서 테이블 및 칼럼의 목록 획득이 가능한 사전검색 기법에대해 알아보았습니다 . 

댓글