본문 바로가기
정보보안/SQL Injection

BLind SQL Injection

by Albin 2021. 11. 5.

SQL 질의 결과가 노출되지 않는 곳에서 사용하는 공격 기법

 

 

공격 순서 및 예시

 

(1) 파라미터가 전송되는 페이지 에서 참 / 거짓을 구분할 수 있는 페이지를 확인한다.

 

(2) 참/거짓 값으로 인증시도 ( 인젝션 가능 여부 )

ex ) a' and '1' ='1  ,  a' and '1' ='2

 

(3) substring(자를 문자열, 자를 문자의 시작점, 자를 문자의 개수) 을 이용하여 디비이름 / 테이블 / 컬럼확인

ex) a' and substring(select database(),1,1))

 

(4) ascii 코드로 비교하여 문자 확인

ex) ascii(substring(select database(),1,1))) > 70

 

위의 3, 4번을 통해 첫번째 두번째 세번째 ... 반복하여 원하는 데이터 값을 얻는다.

 

장점 및 단점

질의 결과가 노출되지 않아도 사용이 가능 하기 때문에 SQL 가장 공격 가능성이나 활용도가 높다. 그러나 참/거짓으로 데이터를 얻기 때문에 반복적인 질의문을 사용해야 한다.

 

따라서 현실적으로 하나씩 대입해 원하는 값을 도출한다는 것은 너무 많은 시간과 비용이 소모되기 때문에 for문 이나 반복분을 통해 반복적으로 대신 처리해 줄 코드를 사용해서 활용해야하는 기법으로 보인다.