news 2026/7/29 6:05:39

SQL注入四种类型详解:原理、利用与防御

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL注入四种类型详解:原理、利用与防御

1. 什么是 SQL 注入?

SQL 注入是指攻击者将恶意 SQL 代码插入到输入参数中,应用程序未进行过滤便将其拼接到 SQL 查询语句中,导致数据库执行了非预期的命令。

一句话解释就是你输入的内容被直接当作代码执行了

2. 四种常见类型

2.1 联合查询注入
原理:利用 UNION 关键字,将攻击者的查询结果拼接到正常查询结果后面,在页面上回显。

步骤:

1. 猜列数:

1' ORDER BY 1 --+


2. 找显示位:

-1' UNION SELECT 1,2,3 --+


3. 查数据:

-1' UNION SELECT 1,database() --+

示例:

-1' UNION SELECT 1, table_name FROM information_schema.tables WHERE table_schema='dvwa' --+

适用条件:页面有显示位,能直接看到查询结果。


2.2 报错注入

原理:利用 updatexml() 或 extractvalue() 函数,故意构造非法 XPath 路径,触发数据库报错,在错误信息中带出数据。

示例:

1' AND updatexml(1, concat('~', database(), '~'), 1) --+

适用条件:页面能显示 SQL 报错信息。

2.3 布尔盲注

原理:页面只有两种状态(“存在”/“不存在”),通过构造布尔条件逐位猜出数据。

猜长度:

1' AND LENGTH(database())=4 --+

以此类推。

猜字符:

1' AND SUBSTRING(database(),1,1)='d' --+

以此类推。

适用条件:页面无数据显示,但能区分“真/假”状态。

2.4 时间盲注

原理:通过 SLEEP() 函数制造时间差,根据页面响应时间判断条件是否成立。

示例:

1' AND IF(LENGTH(database())=4, SLEEP(5), 0) --+

适用条件:页面没有任何变化,只能靠响应时间判断。

3. 防御 SQL 注入

最有效的方法是参数化查询(预编译语句)。将 SQL 代码与数据分离,用户输入永远不会被当作代码执行。


其他防御措施:对输入进行过滤与转义

最小权限原则

关闭错误回显,隐藏数据库报错信息

4. 总结

SQL 注入的本质是用户输入被拼接到了 SQL 语句中。防御的核心是不信任用户输入,使用参数化查询是根本解决手段。

**免责声明**:本文所有操作均在自建虚拟机环境中完成,仅用于网络安全学习与研究。严禁用于任何非法用途,违者自行承担后果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 6:02:48

基于STM32的智能家居毕设实战:从传感器到云端的完整系统构建

1. 项目缘起:为什么是STM32与智能家居?又到了一年一度的毕业设计季,最近后台收到不少私信,都在问同一个问题:“学长,我想做智能家居相关的毕设,用STM32单片机靠谱吗?具体该怎么做&am…

作者头像 李华
网站建设 2026/7/29 5:59:05

你的销售系统够‘完整’吗?大客户作战需要三层硬能力

拆解PSS⁵体系力:用销售漏斗、真实进展与连续动作管理从线索到回款的过程。大客户销售不是搞定某个人,而是经营一个决策系统。本文从流程、工具、节奏三个层面,说明体系力如何让推进更可见、可复盘、可协同。大客户销售最怕的不是丢单&#x…

作者头像 李华
网站建设 2026/7/29 5:55:44

基于Scrapy-Redis的亚马逊Best Sellers榜单分布式爬虫实战指南

1. 项目概述:为什么需要分布式爬取亚马逊榜单? 做数据抓取的朋友,尤其是盯上亚马逊这类大型电商平台的,估计都经历过单机爬虫的“阵痛期”。当你兴致勃勃地写了个Scrapy爬虫,准备把亚马逊Best Sellers排行榜&#xff0…

作者头像 李华
网站建设 2026/7/29 5:54:29

Python事件驱动编程:从概念到asyncio实战

1. 项目概述:从“顺序执行”到“事件驱动”的思维跃迁如果你刚开始学Python,写出来的代码大概率是“一条路走到黑”的:先执行第一行,再执行第二行,遇到for循环就转几圈,遇到函数就跳进去执行完再回来。这种…

作者头像 李华
网站建设 2026/7/29 5:48:04

Arduino EEPROM存储浮点数:共用体与模板实现非易失性数据保存

1. 项目概述与核心痛点在Arduino项目开发中,我们经常需要保存一些关键数据,比如传感器的校准参数、设备的运行状态、用户的自定义设置等,以便在断电重启后能恢复现场。Arduino的EEPROM(电可擦可编程只读存储器)就是为这…

作者头像 李华
网站建设 2026/7/29 5:46:48

FPGA开发利器:CORDIC IP核原理、配置与实战应用详解

1. 项目概述:为什么CORDIC IP核是FPGA工程师的“瑞士军刀”在FPGA开发的世界里,我们常常需要处理一些“不友好”的数学运算。比如,给你一个角度,让你算它的正弦值;或者给你一个复数,让你求它的幅度和相位。…

作者头像 李华