用法-请求-sqlmap用户手册-测试-IT技术博客

请求

这些选项可用于指定如何连接到目标URL。


HTTP方法

选项:--method


sqlmap自动检测将在HTTP请求中使用的正确HTTP方法。 但是,在某些情况下,需要强制使用自动机未使用的特定HTTP方法(例如PUT)。 使用此选项(例如--method = PUT)是可行的。


HTTP数据

选项:--data


默认情况下,用于执行HTTP请求的HTTP方法是GET,但是您可以通过提供要在POST请求中发送的数据,将其隐式更改为POST。 这些数据(即那些参数)将针对SQL注入以及任何提供的GET参数进行测试。


例如:

$ python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" -f --banne\
r --dbs --users


参数分割符

选项:--param-del


在某些情况下,需要覆盖默认参数定界符(例如&在GET和POST数据中),以使sqlmap能够正确拆分和分别处理每个参数。


例如:

$ python sqlmap.py -u "http://www.target.com/vuln.php" --data="query=foobar;id=\
1" --param-del=";" -f --banner --dbs --users


HTTP Cookie头部

选项和开关:--cookie,-cookie-del,-load-cookies和--drop-set-cookie


这些选项和开关可以在两种情况下使用:


该Web应用程序需要基于cookie进行身份验证,并且您拥有此类数据。

您想要检测和利用此类标头值的SQL注入。

不论哪种原因,您都需要发送带有sqlmap请求的cookie,要执行的步骤如下:


  • 使用您喜欢的浏览器登录到应用程序。

  • 从浏览器的首选项或HTTP代理屏幕中获取HTTP Cookie,然后将其复制到剪贴板。

  • 返回您的外壳并通过将剪贴板粘贴为选项--cookie的值来运行sqlmap。

请注意,HTTP Cookie标头值通常以;分隔。字符,而不是&。 sqlmap也可以将它们识别为单独的parameter = value集,以及GET和POST参数。如果分隔符不是;可以使用选项--cookie-del来指定。


如果在通信期间的任何时间,Web应用程序使用Set-Cookie标头进行响应,则sqlmap将自动在所有其他HTTP请求中将其值用作Cookie标头。 sqlmap还将自动测试这些值以进行SQL注入。可以通过提供--drop-set-cookie开关来避免这种情况-sqlmap将忽略任何即将到来的Set-Cookie标头。


反之亦然,如果您提供带有选项--cookie的HTTP Cookie标头,并且目标URL随时发送HTTP Set-Cookie标头,则sqlmap会询问您用于以下HTTP请求的cookie组。


还有一个--load-cookies选项,可用于提供一个包含Netscape / wget格式的cookie的特殊文件。


请注意,如果--level设置为2或更高,则还将针对SQL注入测试HTTP Cookie头。请阅读下面的详细信息。


HTTP User-Agent头部

选项和开关:--user-agent--random-agent


默认情况下,sqlmap使用以下User-Agent标头值执行HTTP请求:

sqlmap / 1.0-dev-xxxxxxx(http://sqlmap.org)

但是,可以通过提供--user-agent选项来伪造它,方法是提供自定义User-Agent作为选项的参数。


此外,通过提供--random-agent开关,sqlmap将从./txt/user-agents.txt文本文件中随机选择一个User-Agent,并将其用于会话中的所有HTTP请求。


一些站点对HTTP User-Agent标头值执行服务器端检查,如果未提供有效的User-Agent,Web防火墙或类似的入侵防御系统不希望其值或将其值列入黑名单,则HTTP响应将失败。在这种情况下,sqlmap将向您显示一条消息,如下所示:

[hh:mm:20] [ERROR] the target URL responded with an unknown HTTP status code, try to 
force the HTTP User-Agent header with option --user-agent or --random-agent

请注意,如果--level设置为3或更高,则还将针对SQL注入测试HTTP User-Agent标头。请阅读下面的详细信息。


HTTP Host 头部

选项:--host


您可以手动设置HTTP Host标头值。 默认情况下,HTTP Host标头是从提供的目标URL解析的。


请注意,如果--level设置为5,还将针对SQL注入对HTTP Host标头进行测试。有关详细信息,请参见下文。


HTTP Referer头部

选项:--referer


可以伪造HTTP Referer标头值。 默认情况下,如果未明确设置,则不会在HTTP请求中发送HTTP Referer标头。


请注意,如果--level设置为3或更高,则还将针对SQL注入测试HTTP Referer标头。 请阅读下面的详细信息。


EXtra HTTP头部

选项:--headers


通过设置选项--headers可以提供额外的HTTP标头。 每个标头必须用换行符分隔,从配置INI文件中提供标头要容易得多。 您可以在这种情况下查看示例sqlmap.conf文件。


针对MySQL目标的示例:

$ python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" -z \
"ign,flu,bat,tec=E" --headers="Host:www.target.com\nUser-agent:Firefox 1.0" -v 5
[...]
[xx:xx:44] [TRAFFIC OUT] HTTP request [#5]:
GET /sqlmap/mysql/get_int.php?id=1%20AND%20%28SELECT%209351%20FROM%28SELECT%20C\
OUNT%28%2A%29%2CCONCAT%280x3a6161733a%2C%28SELECT%20%28CASE%20WHEN%20%285473%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2\
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2\
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2\
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2\
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2\
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2\
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20\
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%\
20%20%20%20%20%20%20%20%20%20%20%205473%29%20THEN%201%20ELSE%200%20END%29%29%2C\
0x3a6c666d3a%2CFLOOR%28RAND%280%29%2A2%29%29x%20FROM%20INFORMATION_SCHEMA.CHARA\
CTER_SETS%20GROUP%20BY%20x%29a%
29 HTTP/1.1
Host: www.target.com
Accept-encoding: gzip,deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-agent: Firefox 1.0
Connection: close
[...]


HTTP协议认证

选项:--auth-type和--auth-cred


这些选项可用于指定实现哪个HTTP协议身份验证后端Web服务器以及将用于执行对目标应用程序的所有HTTP请求的有效凭据。


支持的三种HTTP协议身份验证机制是:


  • Basic

  • Digest

  • NTLM

凭据的语法为username:password。


有效语法示例:

$ python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id\
=1" --auth-type Basic --auth-cred "testuser:testpass"

HTTP协议私钥认证

选项:--auth-file


如果Web服务器需要适当的客户端证书和用于身份验证的私钥,则应使用此选项。 提供的值应该是包含您的证书和私钥的PEM格式的key_file。


生成与--auth-file兼容的key_file.txt的示例:

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout auth_file.key -out auth_file.pem &&\
cat auth_file.key auth_file.pem > auth_file.txt && cat auth_file.txt
Generating a 2048 bit RSA private key
.........+++
...........+++
writing new private key to 'auth_file.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCWM28J1ua2DINf
VLU28oeJwQidL9vTRoGJR5pfBU6Mhu33Cv6RuVEJAfMWEKYDSbqbrEyy1zUiNTcG
mEd026Peq0SPRvsKsVb6K+EHVF3r+6ExXHEctPRbh2GIzi2kCQMkdHDg+DhmieQ9
9Haxk9IREJZTo2vC1ohvM5M/yubw4iwgMlDaW+4s82OgOcCLjewbPLFZU5gMV+8W
XLKUttUYwV79duPbEvG9S1soNFHhu/MOcNiKJpH2zSegd9Dk5/OJRGX5xEiv7AyL
4shQLpAqn5kuZcm2K+ib/4x/Rw2yT1Slh2tQIi8RcwlYyycOrSqvhW7vvdqkblbY
mQQyR2ChAgMBAAECggEBAIqvMveC1cOCCksbi7cQeNVYxvtcFT0e/LwkwQS7gat/
anmQTT2APrJyemEFPkQK76KNlMQMsaLEP+p28IOVydjvin5Aq8tTs1uK6Fw8Kfya
elt5X3eCHZ3lgskuljW/nIcsfI08o9cJuxT5hB6yvmPDTQos+nMMYy1KEcv1LQd8
Y+QAmVQqMF5Nyf8Q6op6hWZIIJY5NDbRE0zYzhGcHWg2798Dx1sO0HT6TD8cNP8H
AVp/V21tzpmFpe0A7NajgYEjkij6fg+6mG0j0WZdWymYXDeiTdDpwzs/SPRevBLn
Okp/6vqtdekMeYL591MNBl8GRZpJW9gNLRX7vQ6YYAECgYEAxGV9e85GpLUd/uUb
1MvGajd+HtN/uoWH1ySG34vi3q/dDKBehry2yoDUosxXf9vbH0IrvaXnO8yXGflS
wb2TELLezGWbw6kPaw2XIgL4elO5TPh2rNJwz1wOhv3FT2XSGJbXx/CED3mL7MGs
qwRU/bRrNV7RmzV2veThlLCLjZECgYEAw8jm7vOzQQnqEjs0wlfJmzOyFqilYvEP
8v7HxDv1M7e7M0TqLECET9VlQE5spGuzEWN7/iMtE8xxnz2n/vGnGAV8qv1LJYrA
TWQMTIC6V9/jKM8wNOfT7Eh1rJ1cty87yokXpy/cdmkv7yxb1b2zuBk8/1nlYqA0
5uqb345eWhECgYEAmoXv0TVfR8BpNWA2IZujJXc7+C0YVj0xwAixRbneaq+cEI8t
UH2ypGnw45Y7UhI9ub5qg/DAmsBCMuGER4NM7tqNiex4Pd4Kj4RF4TDNKBIvvWvQ
k/GPaNdZZsTMNcg7IbWtWVbX0QUlHsbTgEsMRAFsSLWt3ZyXLJmlE0REyMECgYEA
oCqEscrwRC7GLK/+01ZZ+fvqnxrMYgrvj0zbRDAAwpR2MtUX9ae6Fk1vDZKa0k/B
KGKIlzlTsTS5ZxpbivdKSR6EBKY+ibHe6/EDFrrgtu7TuRj2SPG2rz//9Hyv0rRz
Z5eLoBxJcR1QN4vEfTE6C0uqWQPD4lFJtfcMGXEwwuECgYAK+4gwPBlrKClrRtDc
7Fnq8RLYeZRbM5WEmTHfRnlYylniMsj2K20H8ln8pdOqCE4iJn0SezIQIaAtcwMP
WQt15kgJgLwM/uBtqDeWRpTEotVMFXQbZImobjpXUhTqu0NWBwbypM/zarfRWPJ4
fJkrlA16caVj3qGaX1lkm06OAA==
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJALTHPlkIs/+KMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTgwODIyMDc0NTQxWhcNMTkwODIyMDc0NTQxWjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAljNvCdbmtgyDX1S1NvKHicEInS/b00aBiUeaXwVOjIbt9wr+kblRCQHz
FhCmA0m6m6xMstc1IjU3BphHdNuj3qtEj0b7CrFW+ivhB1Rd6/uhMVxxHLT0W4dh
iM4tpAkDJHRw4Pg4ZonkPfR2sZPSERCWU6NrwtaIbzOTP8rm8OIsIDJQ2lvuLPNj
oDnAi43sGzyxWVOYDFfvFlyylLbVGMFe/Xbj2xLxvUtbKDRR4bvzDnDYiiaR9s0n
oHfQ5OfziURl+cRIr+wMi+LIUC6QKp+ZLmXJtivom/+Mf0cNsk9UpYdrUCIvEXMJ
WMsnDq0qr4Vu773apG5W2JkEMkdgoQIDAQABo1AwTjAdBgNVHQ4EFgQUVvHI/2qF
kmRCEWlWB+ZvJzWTnUkwHwYDVR0jBBgwFoAUVvHI/2qFkmRCEWlWB+ZvJzWTnUkw
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAg5tmkM75/NEEymu0ublj
c2R1/ZxwbKMjg98KxLqGFJbPVRG0qgIy+uc+Gvh6FEgPF22i4L9DROfuDQW3YSJ6
x3JnJxLsU+jjXxtN7hNwoQziQkicKr0y47TjqOKLlBlKTbdnr74nJXSYQhi4qEFE
qgrUG7ScitgLvcf2sDVf9L2SUsH5iRK+HlgYEtSKhUl5SkLapcUUF+GmectUOkm7
m7Z8gelenVUerLojnQL2avKD07hWTTGkgX2PV8hdun0WIvBLWAcJN+6T9sdakJZZ
qJjFQBXjcxwgVe0vB0vJmqa5lj9OymQnBMjp+3zpUtDJNH2M1qySbU6tGEX1wsW/
VA==
-----END CERTIFICATE-----

忽略(有问题的)HTTP错误代码

选项--ignore-code


如果您要测试的站点偶尔返回导致常规sqlmap运行出现问题的HTTP错误代码(例如401(未经授权)),而您想忽略它并继续进行测试,则可以使用--ignore-选项码


HTTP(S)代理

选项和开关:--proxy,--proxy-cred,--proxy-file和--ignore-proxy


可以使用选项--proxy提供HTTP(S)代理地址,以通过HTTP(S)请求传递到目标URL。 HTTP(S)代理值的语法为http:// url:port。


如果HTTP(S)代理服务器需要身份验证,则可以为选项--proxy-cred提供用户名:密码格式的凭据。


如果您要使用(一次性)代理列表,在出现任何连接问题(例如,侵入性IP地址被阻止)时跳至下一个代理,可以通过提供--proxy-file选项,提供包含以下内容的文件名:代理列表。


当您要通过忽略系统范围的HTTP(S)代理服务器设置对局域网的目标部分运行sqlmap时,应使用switch --ignore-proxy。


Tor匿名网络

开关和选项:--tor,-tor-port,-tor-type和--check-tor


如果出于任何原因需要匿名,而不是通过单个预定义的HTTP(S)代理服务器传递,则可以按照Tor安装指南中的说明在计算机上配置Tor客户端以及Privoxy(或类似产品)。然后可以使用开关--tor和sqlmap将尝试自动设置Tor代理连接设置。


如果要手动设置使用的Tor代理的类型和端口,则可以使用--tor-type和--tor-port选项进行设置(例如–tor-type = SOCKS5 --tor-port 9050) 。


强烈建议您偶尔使用--check-tor以确保所有设置均正确。在某些情况下,Tor捆绑包(例如Vidalia)配置错误(或重置了先前设置的配置),给您一种错误的匿名感。使用此开关,sqlmap将通过向官员发送单个请求来检查一切是否正常,您是否正在使用Tor?在任何目标请求之前的页面。万一检查失败,sqlmap将警告您并突然退出。


每个HTTP请求之间的延迟

选项:--delay


可以指定每个HTTP(S)请求之间保留的秒数。 有效值为浮点型,例如0.5表示半秒。 默认情况下,不设置延迟。


超时连接之前等待的秒数

选项:--timeout


在考虑HTTP(S)请求超时之前,可以指定等待的秒数。 有效值为浮点数,例如10.5表示十秒半。 默认情况下,设置为30秒。


HTTP连接超时时的最大重试次数

选项:--retries


HTTP(S)连接超时时,可以指定最大重试次数。 默认情况下,它最多重试三次。


随机更改给定参数的值

选项:--randomize


可以指定要在每个请求期间随机更改其值的参数名称。 长度和类型将根据提供的原始值保留。


使用正则表达式从提供的代理日志中过滤目标

选项:--scope


您可以使用有效的Python正则表达式指定用于过滤所需主机的表达式,而不是使用通过选项-l从提供的日志中解析的所有主机。


有效语法示例:

$ python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"


避免过多的请求失败后会话被破坏

选项:--safe-url,--safe-post,--safe-req和--safe-freq


有时,如果执行一定数量的不成功请求,则介于两者之间的Web应用程序或检查技术会破坏会话。这可能在sqlmap的检测阶段或利用任何一种盲目SQL注入类型时发生。原因是SQL有效负载不一定返回输出,因此可能向应用程序会话管理或检查技术发出信号。


要绕过目标设置的限制,您可以提供以下任何选项(或组合使用):


--safe-url:测试期间经常访问的URL地址。

--safe-post:HTTP POST数据发送到给定的安全URL地址。

--safe-req:从文件加载并使用安全的HTTP请求。

--safe-freq:测试两次访问给定安全位置之间的请求。

这样,sqlmap将在每个预定义数量的请求中访问某个安全URL,而无需对其进行任何类型的注入。


关闭参数值的URL编码

开关:--skip-urlencode


根据参数的放置位置(例如GET),默认情况下其值可以是URL编码。在某些情况下,后端Web服务器不遵循RFC标准,并要求值以其原始非编码形式发送。在这种情况下,请使用--skip-urlencode。


标签: sqlmap教程sqlmapsqlmap手册用户手册sqlmap用户手册