관리 메뉴

Information Security

Blind SQL Injection 공격 본문

Web Security/Bee-Box

Blind SQL Injection 공격

HackingPractice 2019. 8. 25. 14:19

Blind SQL Injection 공격

- 쿼리의 결과를 참과 거짓만으로 만 출력하는 페이지에서 사용하는 공격 한다.

- 출력 내용이 참과 거짓 밖에 없어서 데이터베이스의 내용을 추측하여 쿼리를 조작한다.

 

Level (Low)

데이터 aaa를 입력한 결과 데이터베이스에 내용이 존재하지 않는 다고 메시지를 보여준다.

그림 1-1 데이터베이스 확인

Iron Man을 입력해 데이터베이스에 존재하는 것을 알 수 있다.

그림 1-2 Iron Man 검색

결과가 참이라는 쿼리문을 ‘ or 1=1 # 입력했는데 데이터베이스에 존재한다는 것을 알 수 있다.

그림 1-3 참 쿼리문

결과가 거짓이라는 쿼리문을 ‘ or 1=2 # 입력했는데 데이터베이스에 존재하지 않는 것을 알 수 있다.

그림 1-4 거짓 쿼리문

id1인 영화 데이터베이스 명이 첫 번째 글자가 G인 쿼리에서 참이라는 결과를 알 수 있다.

그림 1-5 첫 번째 글자 G

id1인 영화 데이터베이스 명이 두 번째 글자가 G인 쿼리에서 거짓이라는 결과를 알 수 있다.

그림 1-6 두 번째 글자 거짓

Level (Medium)

Level (Medium)은 ‘ or 1=1 # 그림 1-3처럼 참 쿼리를 입력했지만 데이터베이스에 존재하지 않는 것을 알 수 있다.

그림 1-7 참 쿼리문

‘ or 1=2 # 그림 1-4처럼 거짓 쿼리를 입력해도 데이터베이스 존재하지 않는 것을 알 수 있다.

그림 1-8 거짓 쿼리문

대응방안

addslashes 함수를 통해 쿼터(', ") 같은 특수 문자들을 포함하고 있는 문자열에 역 슬래쉬(\)를 넣음으로써 오류를 최소화시키는 역할을 한다. mysql_real_escap_string 함수를 사용하여 입력한 데이터를 우회한다. 사용자 입력 값에 SQL 문법에서 사용하는 특수 문자가 있을 경우 백 슬래시를 붙여 입력 데이터를 SQL 문법으로 인식하지 않게 방어한다.

그림 1-9 functions_external.php 코드

'Web Security > Bee-Box' 카테고리의 다른 글

인증 결함  (0) 2019.08.25
Time Based  (0) 2019.08.25
SQL Injection (Login Form/User)  (0) 2019.08.25
SQL injection (Login Form/Hero)  (0) 2019.08.25
SQL Injection (CAPTCHA)  (0) 2019.08.25