Sqlmap帮助说明
选项-Options
-h:显示基本帮助信息
-hh:显示高级详细帮助信息
--version:显示程序版本信息
-v:设置观察数据等级,一共七个等级:
-v 0: 只显示python错误信息以及严重的信息
-v 1:同时显示基本信息和警告信息(默认)
-v 2:同时显示debug信息
-v 3:同时显示注入的payload信息 (一般常用,用来查看payload信息)
-v 4:同时显示HTTP请求
-v 5:同时显示HTTP响应头
-v 6:同时显示HTTP响应页面
获取目标方式-Target
必须提供这些选项中的至少一个来定义
-u:带检测的目标URL
-r:从文件中加载HTTP请求,适合非GET注入,跳过参数设置
-m:从文件中获取多个目标扫描,URL保存在文本中,sqlmap会一一检测
-l:可以直接把Burp proxy或者WebScarab proxy中的日志直接倒出来交给sqlmap来一个一个检测是否有注入
请求方式-Request
这些选项可用于指定如何连接到目标URL
--data=DATA:把数据以POST方式发送,会检测POST中的参数
--param-del:拆分字符,当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数 eg:--data="query=foobar;id=1" --param-del=";"
--cookie=COOKIE:设置请求的cookie数据,当需要验证用户身份时使用或检查cookie字段注入(当--level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数)
--drop-set-cookie:在HTTP请求中,遇到Set-Cookie的话,sqlmap会自动获取并且在以后的请求中加入,并且会尝试SQL注入,如果不想接受Set-Cookie可以使用此参数来拒接。
--user-agent=AGENT:设置请求参数中的UA头,用于指定UA头的服务器如微信、手机版等(当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入)
--random-angent:使用工具自带的user.agents.txt文件来随机发送UA头,一般用于绕过检测机制
--host=HOST:设置HTTP中host头的值
--referer=REFERER:设置HTTP中referer头中的值(--level参数设定为3或者3以上的时候会尝试对referer注入)
-H:添加一个HTTP头部信息,如:"X-Forwarded-For: 127.0.0.1"
--headers=HEADERS:添加多个头部字段信息,用\n分割:"Accept-Language: fr\nETag: 123"
--timeout:设置请求超过多少秒判定为超时
--retries:设置超时后,重新连接的次数,默认为3次
--delay:设置两个请求间的的延迟,默认没有延迟
--auth-type:设置认证的方式:Basic、Digest、NTLM、 PKI
--auth-cred:设置认证的凭证:name:password
--proxy=PROXY:设置通过代理方式连接目标
--proxy-cred:设置代理认证凭证:name:password
--proxy-file:从文件中加载代理列表
--tor:使用Tor匿名网络
--tor-port:设置tor代理端口
--tor-type:设置Tor代理类型:HTTP、SOCKS4、SOCKS5(默认)
--check-tor:检查Tor是否可用
--csrf-url=CSRFURL:设置URL以提取CSRF令牌
--csrf-token=CSRFTOKEN:设置保存CSRF令牌的参数
--force-ssl:强制使用https请求
--skip-urlencode:关闭URL编码,根据参数位置,值默认将会被URL编码,如果不需要编码则使用此参数。
--eval=CODE:执行自定义的py代码,在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用--eval参数在每次请求时根据所写python代码做完修改后请求。eg:python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
优化-Optimization
这些选项可用于优化sqlmap的性能
-o:打开所有优化开关
--keep-alive:使用HTTP/s持久连接
--null-connection:检索页面长度而不使用实际的HTTP响应主体,可用在盲注注入中来区分True和Flase响应。
--predict-output:预测常见查询输出,进行字符统计预测
--threads:指定请求的并发数量/线程数,默认为1
注入-Injection
这些选项可用于指定要测试的参数,提供自定义注入有效负载和可选的篡改脚本
-p:测试指定的参数,sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。但是你可以手动用-p参数设置想要测试的参数。
--skip-static:测试跳过指定的参数,当你使用--level的值很大但是有个别参数不想测试的时候可以使用--skip参数。
--dbms=DBMS:指定后端使用的数据库,默认情况系sqlmap会自动的探测web应用后端的数据库是什么。
--dbms-cred=DBMS:指定数据库凭证user:password
--os=OS:指定后端使用的操作系统,默认情况下sqlmap会自动的探测数据库服务器系统,支持的系统有:Linux、Windows。
--no-cast:关闭有效负载铸造机制,可用于查看纯洁的payload
--no-escape:关闭字符串转义,可用于查看纯洁的payload
--invalid-bignum:指定无效的大数字,当你想指定一个报错的数值时,可以使用这个参数,例如默认情况是id=13,sqlmap会变成id=-13来报错,你可以指定比如id=9999999来报错。
--invalid-logical:指定无效的逻辑,原因同上,可以指定id=13把原来的id=-13的报错改成id=13 AND 18=19。
--prefix=PREFIX:在payload前面添加指定字符,在有些环境中,需要在注入的payload的前面或者后面加一些字符,来保证payload的正常执行。
--suffix=SUFFIX:在payload后面添加指定字符
--tamper=TAMPER:使用给定的脚本来篡改注入数据
序号 | 脚本名称 | 注释 |
---|---|---|
1 | 0x2char | 将每个编码后的字符转换为等价表达 |
2 | apostrophemask | 单引号替换为Utf8字符 |
3 | apostrophenullencode | 替换双引号为%00%27 |
4 | appendnullbyte | 有效代码后添加%00 |
5 | base64encode | 使用base64编码 |
6 | between | 比较符替换为between |
7 | bluecoat | 空格替换为随机空白字符,等号替换为like |
8 | chardoubleencode | 双url编码 |
9 | charencode | 将url编码 |
10 | charunicodeencode | 使用unicode编码 |
11 | charunicodeescape | 以指定的payload反向编码未编码的字符 |
12 | commalesslimit | 改变limit语句的写法 |
13 | commalessmid | 改变mid语句的写法 |
14 | commentbeforeparentheses | 在括号前加内联注释 |
15 | concat2concatws | 替换CONCAT为CONCAT_WS |
16 | equaltolike | 等号替换为like |
17 | escapequotes | 双引号替换为\\ |
18 | greatest | 大于号替换为greatest |
19 | halfversionedmorekeywords | 在每个关键字前加注释 |
20 | htmlencode | html编码所有非字母和数字的字符 |
21 | ifnull2casewhenisnull | 改变ifnull语句的写法 |
22 | ifnull2ifisnull | 替换ifnull为if(isnull(A)) |
23 | informationschemacomment | 标示符后添加注释 |
24 | least | 替换大于号为least |
25 | lowercase | 全部替换为小写值 |
26 | modsecurityversioned | 空格替换为查询版本的注释 |
27 | modsecurityzeroversioned | 添加完整的查询版本的注释 |
28 | multiplespaces | 添加多个空格 |
29 | nonrecursivereplacement | 替换预定义的关键字 |
30 | overlongutf8 | 将所有字符转义为utf8 |
31 | overlongutf8more | 以指定的payload转换所有字符 |
32 | percentage | 每个字符前添加% |
33 | plus2concat | 将加号替换为concat函数 |
34 | plus2fnconcat | 将加号替换为ODBC函数{fn CONCAT()} |
35 | randomcase | 字符大小写随机替换 |
36 | randomcomments | /**/分割关键字 |
37 | securesphere | 添加某字符串 |
38 | sp_password | 追加sp_password字符串 |
39 | space2comment | 空格替换为/**/ |
40 | space2dash | 空格替换为–加随机字符 |
41 | space2hash | 空格替换为#加随机字符 |
42 | space2morecomment | 空格替换为/_/ |
43 | space2morehash | 空格替换为#加随机字符及换行符 |
44 | space2mssqlblank | 空格替换为其他空符号 |
45 | space2mssqlhash | 空格替换为%23%0A |
46 | space2mysqlblank | 空格替换为其他空白符号 |
47 | space2mysqldash | 空格替换为–%0A |
48 | space2plus | 空格替换为加号 |
49 | space2randomblank | 空格替换为备选字符集中的随机字符 |
50 | symboliclogical | AND和OR替换为&&和 |
51 | unionalltounion | union all select替换为union select |
52 | unmagicquotes | 宽字符绕过GPC |
53 | uppercase | 全部替换为大写值 |
54 | varnish | 添加HTTP头 |
55 | versionedkeywords | 用注释封装每个非函数的关键字 |
56 | versionedmorekeywords | 使用注释绕过 |
57 | xforwardedfor | 添加伪造的HTTP头 |
检测-Detection
这些选项可用于自定义检测阶段
--level=LEVEL:要执行的测试级别(1-5,默认值1),这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试
--risk=RISK:执行测试的风险(1-3,默认1),1会测试大部分测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试
- 默认情况下sqlmap通过判断返回页面的不同来判断真假,但有时候这会产生误差,因为有的页面在每次刷新的时候都会返回不同的代码,比如页面当中包含一个动态的广告或者其他内容,这会导致sqlmap的误判。此时用户可以提供一个字符串或者一段正则匹配,在原始页面与真条件下的页面都存在的字符串,而错误页面中不存在(使用--string参数添加字符串,--regexp添加正则),同时用户可以提供一段字符串在原始页面与真条件下的页面都不存在的字符串,而错误页面中存在的字符串(--not-string添加)。用户也可以提供真与假条件返回的HTTP状态码不一样来注入,例如,响应200的时候为真,响应401的时候为假,可以添加参数--code=200。
--string=STRING:查询计算为True时要匹配的字符串
--not-string=NOT:查询计算为False时要匹配的字符串
--regexp=REGEXP:当查询被评估为True时匹配的正则表达式
--code=CODE:查询评估为True时要匹配的HTTP代码
--text-only:仅根据文本内容比较页面
--titles:仅根据标题比较页面
技巧-Techniques
这些选项可用于调整特定SQL注入的测试
--technique=TECH:要使用的SQL注入技术(默认为B)(B:布尔注入、E:报错注入、U:联合注入、S:多语句查询注入、T:时间延迟注入)
--time-sec=TIMESEC:延迟DBMS响应的秒数(默认值为5s)
--union-cols=UCOLS:要测试UNION查询SQL注入的列范围,默认会测试1-10个字段数,当--leve为5时会增加到50个字段数,设定--union-cols的值应该是一段整数,如:12-16,是测试12-16个字段数。
--union-char=UCHAR:用于强制列数的字符,可以是null或者随机整数
--union-from=UFROM:要在UNION查询SQL注入的FROM部分中使用的表
--dns-domain=DNS:DNS泄露攻击,用于DNS渗透攻击的域名
--second-order:二阶SQL注入,有些时候注入点输入的数据看返回结果的时候并不是当前的页面,而是另外的一个页面,这时候就需要你指定到哪个页面获取响应判断真假。--second-order后面跟一个判断页面的URL地址。
列举-Enumeration
这些选项可用于枚举后端数据库管理系统中包含的信息,结构和数据表。此外,您可以运行自己的SQL语句
-a:检索一切
-b:检索数据库版本信息
--current-user:检索数据库当前用户
--current-db:检索当前数据库名
--hostname:检索DBMS服务器主机名
--is-dba:检测DBMS当前用户是否具有管理员权限
--users:枚举DBMS用户
--passwords:枚举DBMS用户密码哈希值
--privileges:枚举DBMS用户权限
--roles:枚举DBMS用户角色
--dbs:枚举DBMS数据库
--tables:枚举DBMS数据库表
--columns:枚举DBMS数据库表列
--schema:枚举DBMS架构
--count:检索表的记录数
--dump:转储DBMS数据库表记录
--dump-all:转储所有DBMS数据库表记录
--search:搜索列,表和或数据库名
--comments:在枚举期间检查DBMS注释
-D:要枚举的DBMS数据库
-T:要枚举的DBMS数据库表
-C:要枚举的DBMS数据库表列
-X:要枚举的DBMS数据库标识符
-U:DBMS用户枚举
--exclude-sysdbs:枚举表时排除DBMS系统数据库
--pivot-column=P:透视列名称
--where=DUMPWHERE:在表转储时使用WHERE条件
--start=LIMITSTART:要检索的第一个转储表条目
--stop=LIMITSTOP:要检索的最后转储表条目
--sql-query=QUERY:要执行的SQL语句
--sql-shell:提示交互式SQL shell
--sql-file=SQLFILE:从给定文件中执行SQL语句
暴力-Brute force
这些选项可用于执行强力检查
--common-tables:检查表是否存在
--common-columns:检查字段是否存在,暴力跑的列名在txt/common-columns.txt中
文件系统访问
这些选项可用于访问后端数据库管理,系统底层文件系统
--file-read=FILE:从后端DBMS文件系统中读取文件
--file-write=FIL:在后端DBMS文件系统上写一个本地文件
--file-dest=FILE:要写入的后端DBMS绝对文件路径
操作系统访问
这些选项可用于访问后端数据库管理,系统底层操作系统
--os-cmd=OSCMD:执行操作系统命令
--os-shell:提示交互式操作系统shell
--os-pwn:提示OOB shell,Meterpreter或VNC
--os-smbrelay:单击提示输入OOB shell,Meterpreter或VNC
--os-bof:存储过程缓冲区溢出利用
--priv-esc:数据库进程用户权限升级
--msf-path=MSFPATH:安装Metasploit Framework的本地路径
--tmp-path=TMPPATH:临时文件目录的远程绝对路径
Windows注册表访问
这些选项可用于访问后端数据库管理,系统Windows注册表
--reg-read:读取Windows注册表项值
--reg-add:添加注册表值
--reg-del:删除Windows注册表项值
--reg-key=REGKEY:Windows注册表项
--reg-value=REGVAL:Windows注册表项值
--reg-data=REGDATA:Windows注册表项值数据
--reg-type=REGTYPE:Windows注册表项值类型
一般-General
这些选项可用于设置一些常规工作参数
-s:从存储的(.sqlite)文件加载会话
-t:将所有HTTP流量记录到文本文件中
--batch:永远不要求用户输入,使用默认行为
--crawl=CRAWLDEPTH:从目标网址开始抓取网站
--crawl-exclude=xx:正则表达式从抓取中排除页面(例如“注销”)
--dump-format=DU:转储数据的格式(CSV(默认),HTML或SQLITE)
--encoding=ENCODE:用于数据检索的字符编码(例如GBK)
--hex:在数据检索期间使用十六进制转
--output-dir=OUT:自定义输出目录路径
--update:更新sqlmap
杂项-Miscellaneous
--disable-coloring:禁用控制台输出着色
--identify-waf:对WAF / IPS保护进行全面测试
--list-tampers:显示可用篡改脚本的列表
--mobile:通过HTTP User-Agent标头模仿智能手机
--purge:安全地从sqlmap数据目录中删除所有内容
--skip-waf:跳过启发式检测WAF / IPS保护
--web-root=WEBROOT:Web服务器文档根目录(例如“/ var / www”)
--wizard:简单的向导界面,适合初学者用户