IT Security

정보보안 - Blind SQL Injection

로픽 2017. 10. 11. 23:28
300x250

정보보안 - Blind SQL Injection


Blind는 눈이 먼, 장님이라는 뜻을 가지고 있습니다. 장님이 길을 찾을 때, 지팡이로 더듬더듬 확인하면서,

가듯이 퀴리가 true, false인지만 가지고 원하는 결과를 찾아내는 방법입니다.

Blind SQL Injection은 보통 쿼리의 결과를 직접적으로 눈으로 확인할 수 없을 때 사용합니다.

SQL Injection의 결과가 페이지에 직접적으로 나타나지 않을 때, 쿼리의 결과가 참, 거짓만을 판별하여, 원하는 결과를

추출해 나가는 기법입니다.


출처 : 어서 와 해킹은 처음이지 칼리리눅스로 배우는 해킹과 보안

** 비슷한 예제


로그인 창에 id를 ' or (SELECT length(username) FROM users Limit 0,1) = 8#로 입력하고 패스워드의 경우 임의로 입력합니다.


그럼 전체적인 쿼리문은 이렇게 구성됩니다.


SELECT * FROM users WHERE username='' or (SELECT length(username) FROM users Limit 0,1) = 8#' AND password='test(아무 값)'


** 이때 users 테이블에 저장된 값은 id = humanist, pass = toor 입니다.


SELECT * FROM users WHERE username='' 의 경우 거짓이지만


or (SELECT length(username) FROM users Limit 0,1) = 8 은 참이 됩니다.


테이블의 저장된 첫번째 값이 humanist  8글자의 값 (length로 글자 숫자를 추출함)


#이후로는 주석 처리가 되어 쿼리로 인식하지 않습니다.



이런 방식으로 쿼리가 참, 거짓인지 하나씩 시도하면서 정보를 추출하는 방법을 Blind SQL Injection이라고 하고 


위 방법 이외에도 다양한 방법이 있습니다.

반응형