sql注入10:sqlmap常用参数3

时间:2020-09-18 04:08:15   收藏:0   阅读:67

二十、优化

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多种产品

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!