Sqlmap中文使用手册 - 各个参数介绍(持续更新)

发布于:2024-07-01 ⋅ 阅读:(11) ⋅ 点赞:(0)

1. 指定输出级别

参数:-v

值:

作用
0 只显示Python回源(tracebacks),错误(error)和关键(criticle)信息。
1 同时显示信息(info)和警告信息(warning)(默认为1)
2 同时显示调试信息(debug)
3 同时显示注入的有效载荷(payloads)
4 同时显示http请求
5 同时显示http响应头
6 同时显示http响应内容

使用:默认为1,一般用3即可。


2. 指定目标

2.1 直接连接数据库

参数:-d

背景:针对单个数据库实例,可以用以下两种方式连接。

分类 命令
数据库是MySQL,Oracle,Microsoft SQL Server,PostgreSQL等时 DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME
数据库是SQLite,Microsoft Access,Firebird等时 DBMS://DATABASE_FILEPATH

使用:

用root用户(密码为root)连接本地mysql上面的数据库testdb:
sqlmap -d "mysql://root:root@127.0.0.1:3306/testdb"


2.2 指定目标URL

参数:-u 或者 —url

背景:直接对单个网站进行注入检测。

值:https://www.xxx.com:9999/index.html

使用:sqlmap -u "http://www.target.com/vuln.php?id=1"


2.3 从代理日志中解析目标

参数:-l(小写L)

背景:指定一个Burp或WebScarab的代理日志文件,Sqlmap将从日志文件中解析出可能的攻击目标,并逐个尝试进行注入。

值:表示日志文件的路径。


2.4 从远程站点地图文件(.xml)中解析目标

参数:-x

背景:为了提高收录或者方便rss订阅,很多站点都有站点地图。Sqlmap可以直接解析xml格式的站点地图。

值:站点的xml链接。

使用:sqlmap -x http://www.target.com/sitemap.xml


2.5 从文本中解析目标

参数:-m

背景:提供URL列表文件,sqlmap将逐一扫描每个URL。

值:URL列表文件路径。

使用:sqlmap -m url.txt


2.6 从文件加载HTTP请求

参数:-r

背景:可以将一个HTTP请求保存在文件中,然后使用参数“-r”加载该文件,这样,你可以跳过其他一些选项的使用(例如设置Cookie,发布数据等),以该文件中HTTP请求目标为攻击目标进行测试。

值:http请求的文件。

使用:sqlmap -r get.txt


2.7 将google搜索结果作为攻击目标

参数:-g

背景:将google搜索的前一百条结果作为目标进行检测,需要科学上网。

值:google hack语句

使用:sqlmap -g "inurl:\".php?id=1\""


2.8 从配置INI文件获取目标

参数:-c

背景:从配置INI文件获取目标。例如sqlmap下载目录下面的文件sqlmap.conf,该配置文件可以指定目标地址,代理等各种参数,看一下配置模板文件即可理解。

值:配置文件。

使用:sqlmap -c a.conf


3. 请求

指定http请求的相关参数。

3.1 指定HTTP方法

参数:–method=

背景:一般情况下,会自动检测请求的方法。在某些特定的情况下需要强制指定方法。

值:方法

使用:sqlmap -u “https://www.baidu.com/a.php?id=1” --method=put


3.2 指定HTTP数据

参数:–data=

背景:默认情况下,用于执行HTTP请求的方法是GET,但是当我们使用data参数,则HTTP会使用post方法将参数当作HTTP data提交,同时也会检测此参数有没有注入漏洞。

值:post提交的数据

使用:sqlmap -u "http://www.target.com/vuln.php" --data="id=1"


3.3 指定参数分割符

参数:–param-del=

背景:一般情况下,网站会用&作为参数的分隔符,这也是SQLMAP默认使用的分隔符,如果有些web application不使用&作为分隔符的话,那么就使用–param-del去告诉sqlmap分隔符是什么。

使用:sqlmap -u “http://www.xxxxx.com/a.php?id=1;food=2” --param-del=”;”


3.4 指定cookie

背景:

  1. 指定cookie可以用于两种情况:
    • web应用程序需要基于cookie的身份认证,并且你含有cookie
    • 你想要检测并利用cookie注入。(当–level设置为2或者更高的时候,sqlmap会检测cookie是否存在注入漏洞。)
  2. cookie的字符分隔通常是分号。

参数:

参数 作用
–cookie 指定cookie的内容
–cookie-del 指定cookie的分隔符
–load-cookies 也可以把cookie保存在Netscape / wget格式的文件中,通过此参数来调用
–drop-set-cookie 如果在通信过程中的任何时候,Web应用程序都会响应Set-cookie标题,则sqlmap会自动使用其他的HTTP请求中的值作为cookie,使用此参数sqlmap将会忽略使用cookie。

3.5 指定HTTP User-Agent

参数:

参数 作用
–user-agent 自定义User-Agent
–random-agent 从sqlmap自带的文本文件中随机选择一个user-agent。这个文件是 ./txt/user-agents.txt

背景:默认情况下,sqlmap使用的User-Agent是sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org) 。(当 --level设置为3或者更高时,sqlmap会自动检测user-agent是否存在注入漏洞)


3.6 指定HTTP Host

参数:–host

背景:默认情况下,HTTP Host是从提供的目标URL中分析的,也可以手动设置Host。(当–level设置为5,则会对HTTP Host进行SQL注入测试)


3.7 指定HTTP Referer

参数:–referer

背景:默认情况下,没有HTTP Referer报头在HTTP请求发送。但是可以伪造HTTP Referer标头值。(当–level设置为3或者更高时,则会对HTTP Referer进行注入测试)


3.8 指定额外字段

参数:–headers

使用:sqlmap -u “http://www.xxx.com/a.php?id=1” --headers=”X-A : A \nX-B : B”

背景:可以在sqlmap发送的HTTP请求报文头部添加额外的字段。若添加多个字段,用”\n”分隔。


3.9 HTTP协议认证

参数:

参数 说明
–auth-type 用于指定认证方式。认证方式有三种:Basic,Digest,NTLM。
–auth-cred 用于给出身份认证的凭证。格式:username:password

背景:用于进行http协议认证。

使用:sqlmap -u “http://www.xxxxx.com/a.php?id=1” --auth-type Basic --auth-cred “admin:admin”


3.10 HTTP协议私钥认证

参数:–auth

背景:当Web服务器需要客户端证书和用于身份验证的私钥时,应使用此选项。提供的值应该是PEM格式的key_file,包含你的证书和私钥。


3.11 忽略401错误(未授权)

参数:–ignor-401

背景:如果你在测试返回401错误的站点时想忽略它并继续测试,则可以使用开关--ignore-401,这是个开关参数,后面不需要加其他的数据。


3.12 使用HTTP(S)代理

参数:

参数 作用
–proxy 设置代理,格式为:http://url:port
–proxy-cred 当http(s)需要认证时,可以使用这个参数来提供凭证,格式:username:password
–proxy-file 指定一个包含有代理列表的文件,在连接时,会依次使用文件里面的代理,当代理无效时,会自动调到下一个代理
–ignor-proxy 忽略代理设置

3.13 Tor匿名网络

背景:如果需要匿名,除了通过定义HTTP(S)代理服务器,还可以安装类似Privoxy这样的软件按照Tor的安装指导配置一个Tor客户端。

参数:

参数 作用
–tor 设置好Tor客户端后,使用这个参数让sqlmap自动设置使用Tor代理。
–tor-type 自定义代理的类型。
–to-port 自定义代理的端口。
–check-tor 使用这个开关,可以保证所有的配置都正确,sqlmap会检查是否一切数据都走的匿名代理,如果检查失败,sqlmap会警告你并退出。

3.14 设定每个HTTP请求之间的延迟

参数:–delay

背景:默认情况下,不设置延迟。可以指定每个HTTP(S)请求之间等待的秒数。有效值是一个浮点数,例如0.5意味着半秒。


3.15 设置超时时间

参数:–timeout

背景:默认的超时时间是30s。可以通过这个参数手动设置超时时间,有效值为一个浮点数,比如10.5意味着十秒半。


3.16 连接超时后的最大重试次数

参数:–retries

背景:连接超时后sqlmap会重试连接,默认情况下,重试次数为3次。使用这个参数可以指定HTTP(S)连接超时时的最大重试次数。


3.17 随机更改参数

参数:–randomize

背景:可以指定请求参数名称,这些参数在请求期间根据原始长度和类型随机更改。


3.18 用正则表达式过滤代理日志中的目标

参数:–scope

背景:指定一个Python正则表达式对代理日志进行过滤,只测试符合正则表达式的目标。

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


3.19 避免过多错误请求而被屏蔽

背景:有时服务器检测到某个客户端错误请求过多会对其进行屏蔽,而Sqlmap的盲注测试会产生大量错误请求。为了避免被限制,我们可以每隔一段时间来访问正确的url。使用以下参数,sqlmap将会每隔一段时间访问一个正确的URL,并且不会对其进行任何注入。

参数:

参数 作用
–safe-url 隔段时间就访问一下正确的URL
–safe-post 访问正确URL时携带的POST数据
–safe-req 从文件中载入安全HTTP请求
–safe-freq 每次测试请求之后都会访问一下安全的URL

3.20 关闭参数值的URL编码

参数:–skip-urlencode

背景:默认情况下sqlmap会对参数进行编码。但是又的服务端只接受未编码的参数,这时候可以使用这个参数来停止sqlmap的自动编码。