二十、优化
20.1 一键优化
参数:-o
添加此参数相当于同时添加下列三个优化参数:
1.-keep-alive
2.-null-connection
3.-threads=3
20.2 HTTP长连接
参数:-keep-alive
该参数让sqlmap使用HTTP长连接。与“-proxy”矛盾
20.3 HTTP空连接
参数:-bull-connection
有一种特殊的HTTP请求类型可以直接获得HTTP响应的大小而不用获得HTTP响应体。显然这在布尔型盲注中可以节约很大的带宽。当然这一技术需要服务器端支持的。该参数与“-text-only”矛盾
20.4 HTTP并发
参数:-threads
使用该参数指定Sqlmap可以达到最大并发数。从性能和网站承受能力两方面考虑最大并发数不要超过10.
二十一、注入
21.1 要测试的注入点
参数:--dbms
--dbms="mysql"可以指定哪种数据库注入
参数:--os
可以针对windows/linux扫描探测利用方法,poc可能会有所不同
参数:--no-cast
不加此参数将所有结果转换为字符串,用空格替换NULL结果。
参数:--batch
所有需要选手动选择的自动使用默认,不需要再选择或者回车
21.2 修改注入数据
参数:--tamper
除了用CHAR()编码字符串外Sqlmap没有对payload进行任何混淆。
该参数用于对payload进行混淆以绕过IPS或WAF
该参数后跟一个tamper脚本的名字
二十二、等级
22.1 检测级别
参数:-level
设置测试的等级(1-5,默认为1)lv2:cookie; lv3:user-agent,refere; lv5:host 在sqlmap/xml/payloads文件内可以看见各个level发送的payload
22.2 风险等级
参数:-risk
此参数用于指定风险等级,有1-4共4级。默认风险等级为1,此等级在大多数情况下对测试目标无害。
风险等级2添加了基于事件的注入测试,等级3添加了OR测试。
若注入点是在UPDATE语句中,使用OR测试可能会修改整个表的数据,这显然不是攻击者想要看到的。
因此用户需要能控制风险等级避开有现在风险的payload
二十三、注入技术
23.1 基于时间延迟注入中延时设置
参数:--time-sec
用此参数设置基于时间延迟注入延时时长,默认为5秒。
参数:--union-cols
默认联合查询1-10列,随--level增加最多50列
参数:--union-char
联合查询时,默认使用NULL,极端情况下用NULL可能失败,手动指定数值,比如--union-char 123,空字符就会被填充为123,极少会遇到
23.2 DNS泄露攻击
参数:-dns-domain提高效率
假设攻击者控制着某域名的域名解析服务器,即查询该域名的子域名对应的ip地址都会到这台域名解析服务器来查询
这是攻击者就可以使用“-dns-domain attacker.com”来进行DNS泄露攻击
实际上若是攻击者没有控制任何一台域名解析服务器,那么他可以注册一个新域名,再自己搭建一台域名解析服务器
23.3 指纹
默认地Sqlmap会自动对注入目标进行数据库管理系统指纹识别
参数:-f或-fingerprint
若想执行更广泛的数据库管理系统指纹识别可以添加此参数
参数:-b或-banner
若想得到更精确的指纹识别结果可以添加此参数
二十四、暴力破解
24.1 暴力破解表名
参数:--common-tables
有些情况下用“-tables”不能列出数据库中表明来,如:
1.版本小于5.0的MySQL没有information_schema库
2.版本大于等于5.0,但无权读取information_schema库
3.微软Access的MSysObjects表默认不可读
4.数据库用户权限过低无法读取表名
24.2 暴力破解列名
参数:--common-columns
有些情况下用“-columns”不能列出数据库中表明来,如:
1.版本小于5.0的MySQL没有information_schema表
2.版本大于等于5.0,但无权读取information_schema表
3.数据库用户权限过低无法读取列名
二十五、数据
25.1 一键列举全部数据
参数:-all
使用这一个参数就能列举所有可访问的数据。但不推荐使用,因为这会发送大量请求,把有用和无用的信息都列举出来。
25.2 列举数据库管理系统信息
参数:-b或-banner
大多数的现代数据库管理系统都有一个函数或是环境变量能够返回数据库管理系统版本号和最后的补丁级别以及底层的操作系统信息。
通常这个函数是version()、环境变量是@@version,当然要看目标数据库管理系统了。使用参数”-b”来列举数据库管理系统的这一信息。
sqlmap.py -u "http://127.0.0.1/saqmap/oracle/get_int.php?id=1" --banner
25.3 查询命令
--current-user 列出当前数据库的管理账号
--current-db 列出当前数据库名称
--dbs 列出当服务器有多少数据库
--hostname 机器的主机名
--users 查看数据库管理系统所有的用户账号
--privileges -U username 查看某个数据库账号的权限
25.4 读写文件
--file-red="/etc/passwd"dudaowenjian,文件夹中查看
--file-write="shell.php" --file-dest="/tmp/shell/php"
写一个什么文件,上传到什么路径
25.5 操作系统
--os-cmd
--os-shell
--sql-shell
25.6 绕过waf
--check-waf 检测WAF/IPIS/IDS
--hpp 绕过WAF/IPS/IDS,尤其是ASP/IIS和ASP.NET/IIS
--identify-waf:彻底的检查,30多种产品