最新SQL注入漏洞原理及与MySQL相关的知识点

news2025/1/21 1:00:55

点击星标,即时接收最新推文

5f1de9f4aa5dec4735a77a177f698e1c.png

本文选自《web安全攻防渗透测试实战指南(第2版)》

点击图片五折购书

39facc22d6809eceeb0479e083757431.gif

SQL注入漏洞简介

SQL注入是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数被带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。

一般情况下,开发人员可以使用动态SQL语句创建通用、灵活的应用。动态SQL语句是在执行过程中构造的,它根据不同的条件产生不同的SQL语句。当开发人员在运行过程中根据不同的查询标准决定提取什么字段(如select语句),或者根据不同的条件选择不同的查询表时,动态地构造SQL语句会非常有用。

以PHP语句为例,命令如下:

$query = "SELECT * FROM users WHERE id = $_GET['id']";

由于这里的参数ID可控,且被带入数据库查询,所以非法用户可以任意拼接SQL语句进行攻击。

当然,SQL注入按照不同的分类方法可以分为很多种,如报错注入、盲注、Union注入等。

1f39dff95d0f2f9eb0dac297d6b45987.gif

SQL注入漏洞原理

SQL注入漏洞的产生需要满足以下两个条件。

— 参数用户可控:前端传给后端的参数内容是用户可以控制的。

— 参数被带入数据库查询:传入的参数被拼接到SQL语句中,且被带入数据库查询。

当传入的参数ID为1'时,数据库执行的代码如下:

select * from users where id = 1'

这不符合数据库语法规范,所以会报错。当传入的参数ID为and 1=1时,执行的SQL语句如下:

select * from users where id = 1 and 1=1

因为1=1为真,且where语句中id=1也为真,所以页面会返回与id=1相同的结果。当传入的参数ID为and 1=2时,由于1=2不成立,所以返回假,页面就会返回与id=1不同的结果。

由此可以初步判断参数ID存在SQL注入漏洞,攻击者可以进一步拼接SQL语句进行攻击,致使其获取数据库信息,甚至进一步获取服务器权限等。

在实际环境中,凡是满足上述两个条件的参数皆可能存在SQL注入漏洞,因此开发者需秉持“外部参数皆不可信”的原则进行开发。

2bb674d84a34f05e1e9dd36b4b4fd62f.gif

MySQL中与SQL注入漏洞相关的知识点

在详细介绍SQL注入漏洞前,先介绍MySQL中与SQL注入漏洞相关的知识点。

在MySQL 5.0版本之后,MySQL默认在数据库中存放一个名为“information _schema”的数据库。在该库中,读者需要记住三个表名,分别是SCHEMATA、TABLES和COLUMNS。

SCHEMATA表存储该用户创建的所有数据库的库名,如图4-7所示。需要记住该表中记录数据库库名的字段名为SCHEMA_NAME。

d3766b7a501ee7e365006cf7d215e31b.jpeg

图4-7

TABLES表存储该用户创建的所有数据库的库名和表名,如图4-8所示。需要记住该表中记录数据库库名和表名的字段名分别为TABLE_SCHEMA和TABLE_NAME。

882ade02b249bfeebda1786983e62d8d.jpeg

图4-8  

COLUMNS表存储该用户创建的所有数据库的库名、表名和字段名,如图4-9所示。需要记住该表中记录数据库库名、表名和字段名的字段名分别为TABLE_ SCHEMA、TABLE_NAME和COLUMN_NAME。

e31233db4c1d50177aa97ad14673cd66.jpeg

图4-9  

常用的MySQL查询语句和语法如下。

1.MySQL查询语句

在不知道任何条件时,语句如下:

SELECT 要查询的字段名 FROM 库名.表名

在有一条已知条件时,语句如下:

SELECT 要查询的字段名 FROM 库名.表名 WHERE 已知条件的字段名='已知条件的值'

在有两条已知条件时,语句如下:

SELECT 要查询的字段名 FROM 库名.表名 WHERE 已知条件1的字段名='已知条件1的值' AND 已知条件2的字段名='已知条件2的值'

2.limit的用法

limit的使用格式为limit m,n,其中m指记录开始的位置,m为0时表示从第一条记录开始读取;n指取n条记录。例如,limit 0,1表示从第一条记录开始,取一条记录。不使用limit和使用limit查询的结果分别如图4-10和图4-11所示,可以很明显地看出二者的区别。

7ceb23916e04788bcce7c7453af30cf7.jpeg

图4-10  

a8bdf3c3ef24f48320a3ef16f90a80a3.jpeg

图4-11  

3.需要记住的几个函数

— database():当前网站使用的数据库。

— version():当前MySQL的版本。

— user():当前MySQL的用户。

4.注释符

在MySQL中,常见注释符的表达方式为“#”“--空格”或“/**/”。

5.内联注释

内联注释的形式为/*! code */。内联注释可以用于整个SQL语句中,用来执行SQL语句,下面举一个例子。

index.php?id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3

8489acceff7002586cd2f84df4985833.gif

MS08067安全实验室视频号已上线

欢迎各位同学关注转发~

—  实验室旗下直播培训课程  —

168840c2eb375a14aaec68e72c0b9278.png

b258c4bc6fdfced236d0d1fbd9a5b63f.jpeg

233b1b74f8da81a110552f0657152daa.jpegbb4517d733ce8a3c3d97ca16820d797d.png

c8931cbe9e9bd475ba7236d93f943860.jpeg

119648d143fdde73f21690e14d871fa8.jpeg

035dfd14ac6983569a4c95af31ed994d.jpeg

28393ccd783a9c0fee1ab0a58a9515b5.jpeg

fd31843276ce6617a0279501ad2b44ae.jpeg


和20000+位同学加入MS08067一起学习

385f1ee4e87d6237c84973fd1562efb0.gif

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

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

相关文章

Spring MVC:视图与视图解析器

Spring MVC 前言视图视图解析器附 前言 在上一章中,模型数据通过域对象共享的方式返回给前端控制器 DispatcherServlet 。那么,把结果封装成模型视图 ModelAndView 对象返回给前端控制器 DispatcherServlet 后,下一步是前端控制器 Dispatche…

二分搜索树节点的查找(Java 实例代码)

目录 二分搜索树节点的查找 Java 实例代码 src/runoob/binary/BinarySearchTreeSearch.java 文件代码: 二分搜索树节点的查找 二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个 contain 方法, 判断二分搜索树是否包含某个元素, 返回一个布尔型变…

C#,数值计算——用于积分的梯形法(Trapezoidal Rule)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Routine implementing the extended trapezoidal rule. /// </summary> public class Trapzd : Quadrature { /// <summary> /// Limits …

【Java 基础篇】Java Collection 详解:集合入门指南

Java 是一种流行的编程语言&#xff0c;其中的集合&#xff08;Collection&#xff09;框架为处理和操作数据提供了丰富的工具。无论你是刚刚开始学习 Java&#xff0c;还是已经有一些经验&#xff0c;理解如何使用集合是非常重要的&#xff0c;因为它们是 Java 程序中最常用的…

【漏洞复现】博华网龙设备存在命令执行漏洞

漏洞描述 中科博华是一家主营软件产品开发、信息安全产品研发,兼营计算机系统集成与信息安全服务为一体的高科技企业。拥有七项专利和五十余项软件著作权。具有CMMI、商用密码生产和销售许可证、3C认证、系统集成、信息安全服务和涉密资质。 该产商多个安全设备的系统存在远…

MySQL5.7 在Window平台安装

一、下载 在MySQL的官网下载安装包 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 这里我选择的是x64的ZIP安装包&#xff1b;点击Download下载 这里我选择的是直接开始下载 二、解压与初始化 将下载好的安装包解压&#xff0c;这里我解…

一些芯片设计的冷知识

关于芯片物理版图 芯片物理版图是一种用来描述集成电路内部结构和连接的图形文件&#xff0c;它是芯片设计的最终结果&#xff0c;也是芯片制造的依据。芯片物理版图中包含了各种工艺层的信息&#xff0c;例如多晶硅层、金属层、活性区层、接触层等&#xff0c;每一层都有不同…

MMDetection3D框架环境配置

MMDetection3D是一个基于PyTorch的开源3D目标检测框架。下面是MMDetection3D的环境配置步骤&#xff1a; 安装Anaconda&#xff0c;教程很多不在说明。 1.创建Python环境 使用以下命令创建一个Python 3.8环境&#xff1a; conda create -n mmdetection3d python3.8使用以下…

WPS或EXCEL表格单元格下拉快捷选择项修改及设置方法

WPS或新版本EXCEL的设置下拉选项的方法是.点击一个单元格,菜单上选择数据,下拉列表即可设置,双击文字可编辑 EXCEL 旧的版本不同,可能有不同方法 方法一, 1.在空白区域里面&#xff0c;准备好需要填入下拉菜单里面的内容。 2.选中一个需要添加下拉菜单的单元格&#xff0c;然后…

【多线程】ThreadLocal是什么?有哪些使用场景?使用ThreadLocal需要注意些什么?

文章目录 前言一、ThreadLocal 是什么&#xff1f;二、有哪些使用场景&#xff1f;三、实现原理四、在线程池中使用 ThreadLocal 为什么可能导致内存泄露呢&#xff1f;五、线程池中&#xff0c;如何正确使用 ThreadLocal&#xff1f;六、ThreadLocal 核心方法 前言 一、Threa…

韶音的骨传导耳机怎么样,韶音骨传导耳机值得入手吗

常常有人在问韶音的骨传导耳机怎么样以及韶音骨传导耳机值得入手吗这类问题&#xff0c;其实韶音的骨传导耳机在质量方面还是不错的&#xff0c;而且实力上在骨传导中也有着一定的底蕴&#xff0c;具备了多种功能&#xff0c;作为国产品牌的骨传导耳机&#xff0c;在国际市场中…

vue项目启动npm run ‘配置‘(读取的配置信息详情)

1&#xff1a; VSCode终端启动命令 1-1&#xff1a; npm run serve&#xff0c;配置serve默认就是读取.env.development

SpringBoot中使用EMQX实现MQTT通讯

简述 之前写过一篇SpringBoot通过Netty实现TCP服务的文章&#xff0c;本篇与之前那篇实现的场景类似&#xff0c;都是服务器与客户端之间双向交互&#xff0c;但个人觉得MQTT的方式实现更好&#xff0c;优雅。 基础 MQTT协议是通过MQTT服务器转发消息&#xff0c;MQTT服务器…

C++动态内存管理+模板

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…

Emgu调用摄像头

1&#xff0c;安装EMgu 2,调用摄像头 public FaceLoad(){InitializeComponent();try{capture new Capture();capture.Start();//摄像头开始工作capture.ImageGrabbed frameProcess;//实时获取图像}catch (NullReferenceException excpt){//MessageBox.Show(excpt.Message);}}…

数据结构算法刷题:背包问题

整数和是p&#xff0c;负数和是s-p&#xff0c;那么target p - (s-p)&#xff0c;求出p (st)//2 class Solution: def findTargetSumWays(self, nums: List[int], target: int) -> int: target sum(nums) if target < 0 or target % 2: #target 一定是偶数而且是大于…

界面控件DevExpress WinForms工具栏菜单组件,模拟流行办公软件!

DevExpress WinForms的工具栏和菜单组件灵感来自于Microsoft Office&#xff0c;并针对WinForms开发人员进行了优化&#xff0c;可以帮助开发者快速模拟当下流行的办公软件应用程序。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业…

《向量数据库指南》——向量数据库Milvus Cloud 2.3的可运维性:从理论到实践

一、引言 在数据科学的大家庭中,向量数据库扮演着重要角色。它们通过独特的向量运算机制,为复杂的机器学习任务提供了高效的数据处理能力。然而,如何让这些数据库在生产环境中稳定运行,成为了运维团队的重要挑战。本文将深入探讨向量数据库的可运维性,并分享一些有趣的案…

基于STM32设计的格力空调遥控器

一、格力空调协议介绍 格力空调的红外控制协议被称为格力红外通讯协议或者格力红外遥控协议。这个协议定义了一系列红外信号&#xff0c;可以用来控制格力空调的各种操作&#xff0c;例如开关、温度控制、模式选择、风速控制等等。 格力空调的红外控制协议是一种自定义协议&a…

进程基本概念

一、什么是进程&#xff08;任务&#xff09; 进程&#xff1a;一个被加载到内存中的程序/正在运行中的程序。 开机时&#xff0c;先将操作系统加载到内存中。 ps -ajx 查询运行中的进程 二、操作系统如何管理进程&#xff1f; 前提&#xff1a;如何利用属性认识事…