[SQL Injection] 블라인드 기법

 블라인드 기법 



UNION과 Error 기반 SQL 인젝션 기법은 DB 의 데이터가 직접 노출되는 방식입니다 . 
그러나 데이터가 직접 노출 되지 않고 주입한 SQL공격 쿼리의 실행 여부 확인만 가능한 경우도 있습니다 . 
이 기법은 데이터를 볼 수 없다는 의미로 "블라인드 SQL 인젝션" 이라고 합니다 . 






주입한 SQL 쿼리의 명제가 참 또는 거짓일 때 서버의 반응 만으로 데이터를 획득 하는 기술입니다 . 


블라인드 기법은 데이터를 볼 수 없다는 점 외에 다음과 같은 조건이 성립되어야 사용이 가능한 기법입니다 . 


블라인드 기법 발생조건  

구분

발생조건

설명

1

데이터 노출 불가

취약점이 존재하지만 에러 메세지나 UNION을 통한 데이터 획득이 불가

2

단일 행

SQL 쿼리 질의 결과가 단일 행 조건 만족

3

단일 열

SQL 쿼리 질의 결과가 단일 열 조건 만족

4

NULL 데이터 배제

문자열 연결에는 NULL 데이터 포함 x 



블라인드 공격 기법

발르인드 SQL 인젝션은 DB의 에러 메세지가 노출되지 않은 경우가 많기 때문에 취약점 탐지에 많은 주의가 필요합니다 . 

UNION과 ERROR기반 SQL 인젝션 기법 보다는 취약점 도출 및 공격 난이도가 더 높습니다 . 

SQL 공격 기법은 다음 표와 같이 크게 부울 기반과 시간 기반 으로 구분됩니다 . 



















Boolean 기반은 조건에 따라서 HTTP 응답 콘텐츠가 달라지거나 에러가 발생합니다 . 

각각의 방식을 조건부 응답(Conditional Response)과 조건부 에러(Conditional Response) 라고 합니다 . 

Time 기반은  조건에 따른 콘텐츠의 변화가 없기 때문에 조건부 응답과 조건부 에러로는 취약점 판단이 불가능 합니다 . 
( 시간 지연이 가능한 SQL 쿼리를 주입하면 HTTP 응답 시간에서 차이가 발생합니다) 



댓글