일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- igoat
- InsecureBank
- lord of sql injection
- 안드로이드
- elasticsearch
- 파이썬
- Strings
- Reflected XSS
- MFT
- Volatility
- Openstack
- kibana
- Docker
- base64
- SQL Injection
- frida
- logstash
- CTF-d
- 2018
- vulnhub
- XSS
- beebox
- ctf
- foremost
- Suninatas
- 인시큐어뱅크
- otter
- diva
- ESXi
- NTFS
- Today
- Total
Information Security
Blind SQL Injection 공격 본문
Blind SQL Injection 공격
- 쿼리의 결과를 참과 거짓만으로 만 출력하는 페이지에서 사용하는 공격 한다.
- 출력 내용이 참과 거짓 밖에 없어서 데이터베이스의 내용을 추측하여 쿼리를 조작한다.
Level (Low)
데이터 aaa를 입력한 결과 데이터베이스에 내용이 존재하지 않는 다고 메시지를 보여준다.
Iron Man을 입력해 데이터베이스에 존재하는 것을 알 수 있다.
결과가 참이라는 쿼리문을 ‘ or 1=1 # 입력했는데 데이터베이스에 존재한다는 것을 알 수 있다.
결과가 거짓이라는 쿼리문을 ‘ or 1=2 # 입력했는데 데이터베이스에 존재하지 않는 것을 알 수 있다.
id가 1인 영화 데이터베이스 명이 첫 번째 글자가 G인 쿼리에서 참이라는 결과를 알 수 있다.
id가 1인 영화 데이터베이스 명이 두 번째 글자가 G인 쿼리에서 거짓이라는 결과를 알 수 있다.
Level (Medium)
Level (Medium)은 ‘ or 1=1 # 그림 1-3처럼 참 쿼리를 입력했지만 데이터베이스에 존재하지 않는 것을 알 수 있다.
‘ or 1=2 # 그림 1-4처럼 거짓 쿼리를 입력해도 데이터베이스 존재하지 않는 것을 알 수 있다.
대응방안
addslashes 함수를 통해 쿼터(', ") 같은 특수 문자들을 포함하고 있는 문자열에 역 슬래쉬(\)를 넣음으로써 오류를 최소화시키는 역할을 한다. mysql_real_escap_string 함수를 사용하여 입력한 데이터를 우회한다. 사용자 입력 값에 SQL 문법에서 사용하는 특수 문자가 있을 경우 백 슬래시를 붙여 입력 데이터를 SQL 문법으로 인식하지 않게 방어한다.
'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 |