Blind SQL Injection Adv

DOUIK·2022년 7월 22일

개념

목록 보기
3/3

Blind SQL Injection

= 이진탐색

  1. 범위 탐색
  • 범위의 중간값을 구해서 값이 큰지 작은지 비교
  1. 범위 조절
  • 중간값보다 크면 큰 쪽으로 작으면 작은 쪽으로 범위를 조절해서 다시 중간값을 구해 비교

Binary search 이용한 공격

ascii에서 출력 가능한 문자 범위는 32~126으로 중간값은 79로 지정해서 그 값보다 큰지 작은지 비교해서 범위를 다시 지정한다

예시

select * from users where username='admin' and ascii(substr(password, 1, 1))>79;

+----------+----------+
| username | password |
+----------+----------+
| admin    | P@ssword |
+----------+----------+
1 row in set (0.00 sec)

Bit 연산

ASCII는 0부터 127 범위의 문자를 표현할 수 있으며, 이는 곧 7 개의 비트를 통해 하나의 문자를 나타낼 수 있다는 것을 의미한다.
그래서 1비트씩 1인지 비교하면 7번의 쿼리로 한 글자를 알아낼 수 있다.
MySQL에서는 숫자를 비트 형태로 변환하는 bin이라는 함수를 제공한다.

예시

  • 문자를 숫자 형태로 변환하고, 이를 비트의 형태로 다시 변환한 예시
SELECT bin(ord('A'));

+---------------+
| bin(ord('A')) |
+---------------+
| 1000001       |
+---------------+
1 row in set (0.00 sec)

0개의 댓글