반응형
SMALL

1. Blind SQL 인젝션 공격 개요

Blind SQL 인젝션 공격은 임의의 SQL 구문을 삽입해 인가되지 않은 데이터를 열람할 있는 공격 기법이라는 것은 다른 SQL 인젝션 공격 기법과는 크게 다르진 않다. 차이점이 있다면 일반 SQL 인젝션 공격은 임의의 SQL 조작된 쿼리를 입력해 한번에 정보를 보여 있지만 Blind SQL 인젝션 공격은 쿼리의 결과에 따른 서버의 참과 거짓의 반응을 통해 데이터베이스의 정보를 알아 있다. 일반 SQL 인젝션 공격에 비해 시간이 상당히 오래 걸린다는게 단점이지만 시간을 투자하면 언제든지 데이터베이스 정보를 탈취할 있기 때문에 위험한 SQL 인젝션 공격 기법 하나라고 판단할 있다.

 

(1) Blind SQL 인젝션 공격 실습

 

[그림 1-1] User ID 입력

Blind SQL Injection 탭을 선택하고 User ID 값에 1 요청한다. 1 전송하면 User ID 존재한다고 표시된다.

 

[그림 1-2] User ID 입력

이번엔 User ID 값에 6 요청한다. 6 전송하면 User ID 존재하지 않는다고 표시된다. 이러한 응답값을 통해 데이터베이스는 5개가 된다는 것을 추측할 있다.

 

[그림 1-3] 정상값 처리

AND 뒤에 1=1#이라는 항상 참이 되는 조건을 추가해 삽입하고 실행한다. 1'이라는 값이 참이기 때문에 뒤에 1=1# 이라는 참이 되는 조건을 추가하면 데이터베이스는 존재한다는 것을 있다. 만약 SQL 인젝션 쿼리문이 실행되지 않는다면 ID 1 아니라 1' AND 1=1# 전체 문자열을 하나의 ID 처리하고 비정상적인 값은 실행하지 않아 User ID 없다는 메시지가 나와야 한다.

 

[그림 1-4] 비정상값 처리

AND 뒤에 1=2#이라는 거짓이 되는 조건을 추가해 삽입하고 실행한다. User ID 존재하지 않는다고 출력된다. AND 뒤에 1=2 거짓이 되기 때문에 앞에 붙은 조건과 관계 없이 거짓이 된다. , AND 이후 조건에 따라 결과가 바뀐다는 거고 입력하는 값이 SQL 쿼리문을 통해 처리되고 있다고 추측할 있다.

 

[그림 1-5] 소스 코드

소스 코드를 보면 빨간색 박스 안에 SQL 쿼리문을 구성하고 있다. User_id='1' AND 1=1 같이 전제가 참인 조건문이 되서 사용자가 존재한다고 출력된거고 AND 1=2 입력하면 where 구문이 전부 거짓이 되서 사용자가 없다고 출력한 것이다. 이와 같이 , 거짓이 구분 되서 출력되는 것은 SQL 쿼리문이 뒤에서 사용되고 있는 것을 추측해 있다.

 

(2) Time based SQL 인젝션 공격 실습

 

[그림 2-1] sleep 함수

User ID 1' AND sleep(5)# 입력한 요청한다. 개발자 도구를 활용해 응답시간을 확인하면 5 동안 응답값이 지연 되는 현상을 있다.

 

[그림 2-2] sleep 함수

이번에는 User ID 6' AND sleep(5)# 입력한 요청한다. 개발자 도구를 활용해 응답시간을 확인하면 응답값이 지연 되지 않고 응답 되는 현상을 있다. 앞에 6' 거짓이기 때문에 응답값이 지연 되지 않고 응답 되는 것이다. , 6이라는 데이터베이스는 존재하지 않는 것이다. 조건이 참일 때만 응답값이 지연되고 거짓일 응답값이 지연되지 않는 , 거짓을 통해 구분할 있게 된다.

반응형
LIST

'웹해킹 > DVWA' 카테고리의 다른 글

SQL 인젝션 공격 대응 방안  (0) 2020.01.28
SQL 인젝션 공격 (3)  (0) 2020.01.28
SQL 인젝션 공격 (1)  (0) 2020.01.28
브루트 포스 공격 대응 방안  (0) 2020.01.26
브루트 포스 공격  (0) 2020.01.26
블로그 이미지

만년필석사

,