Что такое Blind SQL Injection и почему для её эксплуатации хакеры используют функции SLEEP() или WAITFOR DELAY?

Blind SQL Injection (слепая SQL-инъекция) — это разновидность атаки на веб-приложение, при которой злоумышленник не получает прямого вывода результатов SQL-запроса в ответе сервера. В отличие от классической SQL-инъекции, где результат запроса отображается прямо на странице, при слепой инъекции приложение не возвращает данные из базы напрямую. Тем не менее атакующий всё равно может извлечь конфиденциальную информацию, используя косвенные признаки поведения системы.

Существует два основных подвида Blind SQL Injection:

1. **Boolean-based (логическая)** — атакующий задаёт условия, которые дают ответ «истина» или «ложь». Например, страница ведёт себя по-разному в зависимости от того, выполнилось ли условие. Перебирая символы, можно восстановить содержимое базы данных.

2. **Time-based (временна́я)** — именно здесь применяются функции SLEEP() и WAITFOR DELAY. Если приложение не меняет видимого поведения при истинном или ложном условии, атакующий вводит задержку: если запрос выполнился с паузой — условие истинно, если без паузы — ложно.

**Зачем используются SLEEP() и WAITFOR DELAY?**

— `SLEEP(N)` — функция MySQL, которая приостанавливает выполнение запроса на N секунд.
— `WAITFOR DELAY ‘0:0:N’` — аналог для Microsoft SQL Server.

Пример атаки: хакер вставляет в параметр запроса конструкцию вида `1’ AND IF(1=1, SLEEP(5), 0)—`. Если сервер отвечает с задержкой в 5 секунд — инъекция работает и условие истинно. Далее атакующий начинает перебирать символы паролей, имён пользователей и других данных, каждый раз измеряя время ответа.

**Почему это опасно?**

Даже при полном отсутствии видимого вывода данных злоумышленник способен методично восстановить всю структуру базы данных и её содержимое. Процесс медленный, но автоматизируется инструментами вроде sqlmap.

**Как защититься?**

— Использовать параметризованные запросы (prepared statements).
— Применять ORM-фреймворки, которые экранируют пользовательский ввод.
— Ограничивать права пользователя базы данных.
— Настраивать WAF (Web Application Firewall) для обнаружения подозрительных запросов.
— Устанавливать таймауты на выполнение SQL-запросов.

Blind SQL Injection остаётся одной из наиболее распространённых уязвимостей согласно рейтингу OWASP Top 10, и понимание её механизма критически важно для разработчиков и специалистов по информационной безопасности.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.