mo1lusca의 블로그
[Unifox] - 웹해킹 2차시 본문
안녕하세요 오늘은 Blind SQL Injection에 대해 알아볼게요.
Blind SQL injection이란??
주입한 SQL 쿼리의 결과가 보이지 않을 때 사용하는 방법이다.
쿼리의 결과를 볼 수 없기 때문에, True/False 값을 가지는 쿼리를 날려 페이지의 변화를 보거나(Boolean-Based),
딜레이를 거는 쿼리 등을 날려서(Time-Based) 쿼리의 동작 여부같은걸 확인한다.
Boolean-Based SQL injection이란??????
Blind SQL injection의 한 종류로, 쿼리에 대한 True/False 결과로 인한 서버나 사이트 변화를 통해서 데이터를 유추한다.
쉽게 예를 들자면, admin의 비밀번호를 브루트포스를 통해 뚫는다고 할 때, 비밀번호의 자릿수를 알아내는데에 사용 할 수 있다.
업-다운 게임이나 이분탐색 처럼 기준값과 비교 한 True/False의 결과를 통해 비밀번호 자릿수의 범위를 좁힌다..
정보 획득을 위해 많은 쿼리를 전송해야 하고, 자동화를 위해 스크립트를 작성하기도 한다..
Time-Based SQL injection이란????
사이트의 변화를 통해 쿼리 결과의 True/False를 구분할 수 없을 때 사용된다..
Sleep 등의 함수를 사용해 응답 별 딜레이를 다르게 걸어서 결과를 구분한다.
and 연산자와 함께 사용해서 Sleep을 걸 조건을 정할 수 있다.
admin' and sleep(10) -- -
대충 where userid = '{input}' 라고 받는 상황이라고 생각하자.
admin이라는 userid가 있다면, 앞의 조건에서는 True가 뜨고, Sleep 함수를 실행하게 되어
10초동안 딜레이가 걸리는 걸 볼 수 있을 것이다.
(만약 거짓이라면, and 연산자는 일반적으로 앞의 조건이 거짓일 때
뒤의 조건을 검사하지 않기 때문에 Sleep 함수가 실행되지 않을 것이다.)
문제를 풀어봐야 이해가 더 잘 될 것 같다.
SQL injection의 고수가 되자..
'Unifox' 카테고리의 다른 글
| [Unifox] 동아리 프로젝트 - 트리에서의 구간 쿼리 알고리즘 시각화 (0) | 2025.12.07 |
|---|---|
| [Unifox] - 웹해킹 1차시 (0) | 2025.11.02 |
| [Unifox] - SQL (1) | 2025.10.03 |
| [Unifox] - Flask 2차시 (0) | 2025.10.03 |
| [Unifox] - Flask 1차시 (0) | 2025.09.22 |