Логотип
Главная | Статьи | Слепая SQL-инъекция 2025: выжимаем данные из тишины
Слепая SQL-инъекция 2025: выжимаем данные из тишины

Слепая SQL-инъекция 2025: выжимаем данные из тишины

21 мая, 2025

36

🔥 Философия атаки

Слепая инъекция — как ломать сейф в темноте: нет прямого вывода данных, но есть два пути:

  1. Тайминг-атакиSLEEP(5) → если сервер “задумался”, уязвимость есть.
  2. Бинарные ответыIF(SUBSTRING(database(),1,1)=‘a’,123,456) → анализ косвенных признаков (ошибки/редиректы).

Проблема 2025: WAF блокируют явные SLEEP и BENCHMARK. Решение — кастомные задержки через тяжелые SQL-операции.

🐍 Python + SQLMap: танцы с таймерами

Шаг 1: Генерируем «невидимый» нагрузочный запрос:

Шаг 2: Запускаем sqlmap с кастомными таймингами:

Фишки:

  • --randomize=1 → случайный порядок параметров
  • --safe-freq=5 → каждые 5 запросов легитимный запрос для обхода WAF

⚡ Чекер на Python: детектим слепые инъекции за 15 строк

Лайфхаки:

  • Замеряем время до начала получения заголовков (не дожидаемся тела ответа)
  • Тестируем оба условия (TRUE/FALSE) для минимизации ложных срабатываний

🛡️ Как защищаются в 2025 — и как это обойти

  1. Паттерн-блокировка:
    Обход: Разбиваем payload на части через CONCAT('SLE','EP(5)')
  2. Анализ поведения:
    Обход: Добавляем мусорные SQL-операции перед основным payload:
  1. Rate limiting:
    Обход: Используем распределенные прокси через Tor + aiohttp-socks

📊 Практика: вытаскиваем имя базы

Логика:

  1. Определяем длину имени:
    IF(LENGTH(database())=5, SLEEP(3), 0)
  2. Перебираем символы:
    IF(SUBSTR(database(),1,1)='a', SLEEP(3), 0)

Автоматизация через Python:

🔥 Итоги

  • SQLMap по-прежнему рулит, но нужна кастомизация под современные защиты
  • Асинхронный Python в 10 раз ускоряет проверку (5000+ запросов/минуту)
  • Главная фишка 2025: имитация легитимного трафика через случайные паузы и мусорные SQL-операции