• Sqlmap学习笔记(三)


    Sqlmap性能优化设置

    1. Sqlmap设置持久HTTP连接,sqlmap默认是一次连接成功后马上关闭。

      HTTP报文中相当于Connection: Close(一次连接马上关闭)

      要扫描站点的URL比较多时,这样比较耗费性能,所以需要将HTTP连接持久化来提高扫描性能。

      HTTP报文相当于Connection: Keep-Alive

      如果在Sqlmap中设置的话,只需要加上--keep-alive参数

      sqlmap -u "目标URL" --keep-alive
      
    2. Sqlmap设置不接收Http Body(响应体)部分

      Body部分内容太大会增加HTTP响应延迟,如果只关心响应头部分内容,则可以设置空连接

      设置参数--null-connection

      sqlmap -u "目标URL" --null-connection
      
    3. Sqlmap设置多线程

      Sqlmap默认是单线程访问的,扫描的顺序串行执行,必须要等到上一次请求成功后才会执行后面的扫描,这样以来,扫描的效率就会低很多。因为网络连接是耗时操作,等待服务端响应的这段时间,Sqlmap就什么都做不了,本地的CPU、内存资源得不到有利的利用。而多个线程并行处理请求则可以有效的利用本地系统资源。

      但是设置线程太多也不好,因为线程越多,服务端的压力越大,可能会导致响应速度大幅度降低甚至出现丢包现象,导致请求无响应。所以Sqlmap最大只能设置10个线程。

      通过设置--thread参数设置线程数量

      sqlmap -u "目标URL" --thread=10
      
    4. Sqlmap设置预测输出

      用于检索并统计字符出现的次数

      参数:--predict-output

      --thread相互冲突,它们不能同时被设置,比如同时指定--predict-output--thread

      sqlmap -u "http://test.dvwa.com/login.php" --predict-output --thread=3
      

      将会报以下错误

      [23:10:15] [CRITICAL] switch '--predict-output' is incompatible with option '--threads' and switch '-o'
      
    5. 通过-o可以开启所有性能优化的参数

    6. 通过--dbms可以指定要扫描的数据库类型,默认判断是否是其它数据库

      sqlmap -u "目标站点" --dbms=mysql
      

    Sqlmap指定位置注入

    1. 指定参数进行扫描,而不是扫描所有参数,这样可以避免浪费时间到非注入点参数上,从而提高扫描效率。比如扫描以下URL,已知Submit是静态参数,id是动态的,那么在扫描的时候只需要指定id就行了,指定多个参数时用双引号包起来,并以逗号分隔。也可以指定HTTP请求头中的参数,如User-Agent

      sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id
      
    2. 设置--skip跳过指定参数扫描,和-p作用相反,它用来跳过需要扫描的参数。如果不想扫描HTTP头的Referfer和HOST参数

      sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --skip "Referfer,HOST"
      
    3. 设置--param-exclude不对包含具体内容参数的请求进行探测,如不对包含token和session参数的请求进行探测

      sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --param-exclude="token,session"
      
    4. 设置--skip-static扫描时忽略非动态参数

    5. 指定URI位置进行注入

      当注入点在URI上时,除非手动将注入点指向URI上,否则Sqlmap不会对URI路径执行任何自动测试,必须要在扫描时在URI上加星号(*)来指定这些注入点

      sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli*/?id=1&Submit=Submit#"
      

    自动确认扫描

    有时候,在扫描的时候,sqlmap会等待确认(Y/N),需要手动确认才能继续扫描

    通过设置--batch来忽略等待确认,自动回应Y来进行扫描

    sqlmap -u "目标URL" --batch
    

    指定操作系统扫描

    使用--os参数设置要探测操作系统的版本

    sqlmap -u "目标URL" --os windows
    

    或者

    sqlmap -u "目标URL" --os linux
    

    关闭自动转换

    sqlmap默认情况下所有参数会被转成字符串类型,并在NULL值情况下使用空格字符串代替,这样做是为了防止意外错误发生。如果想关闭自动转换的话,使用--no-cast

    sqlmap -u "目标URL" --no-cast
    

    关闭字符转义

    设置--no-escape可以关闭字符转义,在特殊情况下,关闭字符转义可以增加注入的成功率

    Sqlmap自定义注入负载位置

    --prefix:注入点参数的固定前缀

    --suffix:注入点参数的固定后缀

    例如:在对目标URL注入时会自动在payload前后两边加上‘(’和‘)’

    sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --prefix="(" --suffix=")"
    

    执行测试的风险等级

    --risk:1~3,默认为1,风险值和大量使用了基于时间的SQL注入测试,值3也增加了基于OR的SQL注入测试。

    sqlmap -u "目标URL" --risk 3
    

    页面比较参数

    --string:包含指定的字符串,则返回True

    --not-string:与--string互斥,包含指定的字符串时,返回False

    --regexp:通过正则返回匹配的字符串,如果包含则返回True

    --code:如果是返回的是预期的状态码,则返回True

    内容比较参数

    --text-only:页面内容包含指定字符串,如是则返回True

    --titles:页面title标签中包含指定文本,如果包含则返回True,否则反之

  • 相关阅读:
    Vue 4.0及以上修改默认8080端口号
    EasyRTC进入会议室视频父组件传递数据给子组件显示为null的问题修复
    EasyRTC通过Golang缓存库fastcache实现在线用户存储在内存中加快速度
    视频远程通话系统EasyRTC 日志显示调用位置不正确如何优化?
    通过浏览器使用WebRTC时会话终止或断开都是什么原因?
    为什么我们要用BS架构来开发流媒体平台?
    TSINGSEE青犀视频流媒体平台为什么会存在跨域问题?
    EasyDSS/EasyNVR传输高清视频如何优化及节省带宽消耗?
    【解决方案】TSINGSEE青犀视频AI+智慧工地,助力工地安全生产
    【解决方案】TSINGSEE青犀视频助力危化企业安全生产,实现AI全流程监管
  • 原文地址:https://www.cnblogs.com/dagger9527/p/11986551.html
Copyright © 2020-2023  润新知