#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍03-SQL注入联合查询注入(Union-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。

目录

SQL注入联合查询注入(Union-Based SQL Injection)

工作原理

常用MySQL函数

示例

利用前提

注入过程

攻击目的

防范措施


SQL注入联合查询注入(Union-Based SQL Injection)

联合查询注入(Union-Based SQL Injection)是一种SQL注入攻击技术,它利用SQL语句中的UNION关键字来合并两个或多个SELECT查询的结果。这种攻击方法允许攻击者在应用程序的数据库查询中插入额外的查询,目的是从数据库中窃取或操纵数据。

工作原理

在正常的数据库查询中,UNION操作符被用来合并两个SELECT语句的结果集,要求这两个查询具有相同数量的列,并且相应的列具有兼容的数据类型。例如:

SELECT column1, column2 FROM table1 
UNION 
SELECT column3, column4 FROM table2;

在联合查询注入攻击中,攻击者尝试在应用程序的输入字段中插入类似以下内容:

' UNION SELECT 1, version() --

如果应用程序没有正确过滤或转义用户输入,上述输入可能会改变原本的查询,如下所示:

SELECT * FROM users WHERE username = '' UNION SELECT 1, version() --';

这条恶意的SQL语句会返回用户表中的所有记录,并附加数据库版本信息。

常用MySQL函数

在联合查询注入中,常用的MySQL函数包括:

  • user():返回当前数据库用户的用户名和主机名。
  • database():返回当前使用的数据库名称。
  • group_concat():将多行数据合并成一行,以逗号分隔。
  • concat():将多个字符串连接成一个字符串。
  • concat_ws():将多个字符串连接成一个字符串,并以指定的分隔符分隔。

示例

假设有一个查询语句如下:

SELECT username, password FROM users WHERE id = 1;

攻击者可以通过在id参数中注入恶意的SQL代码来获取数据库中的敏感信息。例如:

SELECT username, password FROM users WHERE id = 1 UNION SELECT 1, 2;

如果原始查询的列数为2,且数据类型匹配,那么上述注入语句将会成功执行,并返回两个结果集。

利用前提

  1. 注入点:首先需要找到一个可以进行SQL注入的点,通常是用户输入的参数。
  2. 列数匹配:注入的SELECT语句必须与原始查询的列数匹配。
  3. 数据类型匹配:注入的SELECT语句的列数据类型必须与原始查询的列数据类型匹配。

注入过程

  1. 判断注入点:通过测试不同的输入参数,确定是否存在SQL注入漏洞。
  2. 确定列数:通过尝试不同的列数,确定原始查询的列数。
  3. 判断显示位:通过注入不同的值,确定哪些列会在页面上显示。
  4. 获取数据库信息:通过注入SELECT语句,获取数据库名称、表名、字段名等信息。
  5. 获取字段数据:通过注入SELECT语句,获取表中的具体数据。

攻击目的

联合查询注入攻击的主要目的包括:

  1. 数据泄露:获取数据库中存储的敏感信息,如用户名、密码、配置数据等。
  2. 数据库结构探测:发现数据库中的表名、列名等结构信息。
  3. 执行任意查询:在数据库上执行任意SQL命令,可能包括修改或删除数据。

防范措施

为了防范联合查询注入攻击,可以采取以下措施:

  1. 参数化查询:使用参数化查询或预编译语句来避免直接将用户输入拼接到SQL语句中。
  2. 输入验证:对所有用户输入进行严格的验证和过滤,确保它们符合预期的格式。
  3. 使用白名单:定义可接受的输入值范围,并拒绝所有不在这个范围内的输入。
  4. 错误处理:避免在错误消息中暴露数据库结构或版本信息。
  5. 最小权限原则:限制数据库账户的权限,使其只能访问必要的资源。
  6. 定期审计和扫描:定期对应用程序进行安全审计和漏洞扫描,以便发现和修复潜在的安全问题。

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

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

相关文章

你了解TCP/IP参考模型吗

前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 你了解TCP/IP参考模型吗 一. TCP/IP参考模型二. TCP/IP模型图解三. TCP/IP模型的对比与OSI模型四. TCP/IP协议族五. 总结 TCP/IP参考…

RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGB

RK3588 ,基于FFmpeg, 拉取RTSP,使用 mpp 实现硬解码. ⚡️ 参考: Rk3588 FFmpeg 拉流 RTSP, 硬解码转RGBUbuntu x64 架构, 交叉编译aarch64 FFmpeg mppCode RTSPint open_stream(

MySQL八股-全局锁,表级锁,表锁,元数据锁,意向锁,行级锁,行锁,间隙锁,临键

文章目录 全局锁表级锁表锁(表级锁)元数据锁(MDL,Meta Data Lock,表级锁)元数据锁演示元数据锁兼容的情况元数据锁互相阻塞的情况 意向锁(Intention lock,表级锁)意向锁分类意向锁演示:意向共享锁(**IS**)与…

【BUG记录】Apifox 参数传入 + 号变成空格的 BUG

文章目录 1. 问题描述2. 原因2.1 编码2.2 解码 3. 解决方法 1. 问题描述 之前写了一个接口,用 Apifox 请求,参数传入一个 86 的电话,结果到服务器 就变成空格了。 Java 接收请求的接口: 2. 原因 2.1 编码 进行 URL 请求的…

51c视觉~合集31

我自己的原文哦~ https://blog.51cto.com/whaosoft/12088488 #PDD 西南交大&利兹大学等联合提出金字塔离散扩散模型(PDD),实现了3D户外场景生成的粗到细的策略 本文是对 ECCV 2024 Oral 文章Pyramid Diffusion for Fine 3D Large S…

strace跟踪的原理以及使用

如果想成为一名合格的工程师,那肯定应该知道如何去分析应用逻辑,对于如何优化应用代码提升系统性能也应该能有自己的一套经验。而今天想要讨论的是,如何拓展自己的边界,让自己能够分析代码之外的模块,以及对我自己而言…

Canoe CAPL编程

文章目录 CAPL 简介CAPL的程序结构CAPL的数据类型1. 无符号整数2. 有符号整数3. 有符号整数4. CAN消息类型5. 定时器类型6. 变量定义 on message xxx 中 this相关方法公共方法1. output(msgName) 从程序块输出message(形式1)或errorframe(形式…

详解CompletableFuture

最近一直畅游在RocketMQ的源码中,发现在RocketMQ中很多地方都使用到了CompletableFuture,所以今天就跟大家来聊一聊JDK1.8提供的异步神器CompletableFuture,并且最后会结合RocketMQ源码分析一下CompletableFuture的使用。 Future接口以及它的…

HarmonyOS 非线性容器LightWeightMap 常用的几个方法

LightWeightMap可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,每个key对应一个value。 LightWeightMap依据泛型定义,采用轻量级结构,初始默认容量大小为8,每次扩容大小为原始容量的两倍。 集合中k…

三极管功能

1 三极管的结构 2 三极管开关电路设计注意事项 1 三极管进入饱和状态 电机:500毫安 2 判断三级什么状态:电压法 3 判断三级什么状态:电流法 4 求IB的电阻 5 当三极管用作开关时,通常N型三极管控制负载的gnd端,P型…

P6打卡—Pytorch实现人脸识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.检查GPU import torch import torch.nn as nn import matplotlib.pyplot as plt import torchvisiondevicetorch.device("cuda" if torch.cuda.is_…

R square 的计算方法和一点思考

模型的性能评价指标有几种方案:RMSE(平方根误差)、MAE(平均绝对误差)、MSE(平均平方误差)、R2_score 其中,当量纲不同时,RMSE、MAE、MSE难以衡量模型效果好坏。这就需要用到R2_score&#xff1…

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题 背景介绍 在对 golang 开发的 图像生成网站 进行并发测试时,调用基于 Instruct-pix2pix 模型和 FastAPI 的图像生成 API 遇到了以下错误: Model inference er…

利用DFT画有限长序列的DTFT

MATLAB中没有DTFT函数,计算机不可能给出连续结果,可以只能利用DFT的fft函数来实现。 %% L 7; x ones(1, L) figure; tiledlayout(2,3,"TileSpacing","tight") nexttile; stem([0:L-1],x) box off title([num2str(L), points rect…

【进程篇】03.进程的概念与基本操作

一、进程的概念与理解 1.1 概念 进程是程序的一个执行实例,即正在执行的程序。 1.2 理解 我们编写代码运行后会在磁盘中会形成一个可执行程序,当我们运行这个可执行程序时,这个程序此时就会被操作系统的调度器加载到内存中;操…

基于MATLAB 的数字图像处理技术总结

大家好!欢迎来到本次的总结性的一篇文章,因为咸鱼哥这几个月是真的有点小忙(参加了点小比赛,准备考试等等)所以,在数字图像学习后,我来写一个总结性的文章,同时帮助大家学习&#xf…

llama2——微调lora,第一次参考教程实践完成包括训练和模型

前言:磕磕绊绊,不过收获很多,最大的收获就是解决报错error的分析方法和解决思路 1、首先,我参考的是这篇博客:怎样训练一个自己的大语言模型?全网最简单易懂的教程!_开源模型训练出一个语言模型…

类OCSP靶场-Kioptrix系列-Kioptrix Level 3

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3.目录遍历 1.4. 敏感信息 2.漏洞发现 2.1.登录功能账号密码爆破 2.2.CMS历史漏洞 2.2.1.exp利用 2.2.2.提权 2.3. sql注入getshell 2.3.1.发现注入点 2.3.2. 测试字段和类型 2.3.3.查询字…

WPF实现曲线数据展示【案例:震动数据分析】

wpf实现曲线数据展示,函数曲线展示,实例:震动数据分析为例。 如上图所示,如果你想实现上图中的效果,请详细参考我的内容,创作不易,给个赞吧。 一共有两种方式来实现,一种是使用第三…

PHP代码审计学习(一)--命令注入

1、漏洞原理 参数用户可控&#xff0c;程序将用户可控的恶意参数通过php可执行命令的函数中运行导致。 2、示例代码 <?php echorec-test; $command ping -c 1 .$_GET[ip]; system($command); //system函数特性 执行结果会自动打印 ?> 通过示例代码可知通过system函…