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

Web 安全实战:DVWA Low 级别手工检测 SQL 注入完整教程(原理 + 实操分步详解)

Web 安全实战:DVWA Low 级别手工检测 SQL 注入完整教程(原理 + 实操分步详解)

文章前言

SQL 注入(SQLi)是 Web 安全中最经典、危害最高的高危漏洞之一,大量企业站点、管理后台曾因未过滤用户输入,导致数据库脱库、数据篡改、服务器沦陷等严重安全事故。 很多新手入门 SQL 注入时,直接上手工具扫描,忽略手工判断注入点的核心思路。本文依托 DVWA 靶场 Low 安全等级,从零演示纯手工识别、验证、利用 SQL 注入漏洞全流程,拆解底层 SQL 语句原理,适合 Web 安全入门、渗透测试实训、网络安全课程作业使用,步骤可复现,附完整实验截图与原理剖析。

实验环境:DVWA 1.10 + PHP + MySQL;安全级别:Low(无输入过滤,最适合新手理解注入逻辑)

一、SQL 注入漏洞基础原理

1.1 漏洞产生根源

Web 程序接收用户可控输入(URL 参数、表单、Cookie 等),未做过滤、转义、预处理,直接拼接进 SQL 查询语句执行,攻击者可通过特殊字符破坏原有 SQL 语句逻辑,篡改查询逻辑。

DVWA Low 等级后端核心查询代码(PHP):

php

运行

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

代码直接读取 URL 传入的id参数,原样拼接进 SQL,无任何防护,是典型的危险写法。

1.2 单引号为什么是注入判断核心标识

MySQL 中字符串使用单引号'包裹,当输入'会提前闭合原有 SQL 语句的引号,造成语法报错;输入成对''可抵消引号破坏,消除报错,以此判断页面是否存在注入点。

二、实验前置准备

  1. 启动 DVWA 靶场,登录管理员账号
  2. 左侧导航切换至Setup / Reset DB重置数据库
  3. 进入DVWA Security,将安全级别调整为Low并提交
  4. 切换到SQL Injection功能页面,进入实验靶点

三、分步手工识别 SQL 注入(完整实操)

步骤 1:测试页面正常查询逻辑

User ID输入框输入数字1,点击Submit提交。 页面返回:ID=1,用户名 admin,姓氏 admin。 底层执行 SQL:

sql

SELECT * FROM users WHERE id='1';

作用:确认页面接收 ID 参数、正常查询数据库,明确基础查询逻辑。

步骤 2:异常输入1',通过报错判断存在注入风险

输入 payload:1'提交,页面直接返回 MySQL 语法错误:

plaintext

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1''
报错原理:

用户输入1'拼接后完整 SQL:

sql

SELECT * FROM users WHERE id='1'';

原始语句末尾自带单引号,我们输入的'多闭合一层引号,SQL 引号不匹配,数据库抛出语法错误。

关键结论:页面直接输出数据库报错,说明输入内容直接拼接 SQL,存在极高 SQL 注入风险

步骤 3:输入1''验证注入漏洞真实存在

输入 payload:1''提交,页面不再报错,正常返回 ID=1 用户数据。 拼接后 SQL 语句:

sql

SELECT * FROM users WHERE id='1''';

逻辑说明:我们输入两个单引号,第一个闭合原有查询,第二个和后端自带的引号配对抵消,语法恢复正常,无报错。 这一步实锤页面存在可利用的 SQL 注入漏洞

步骤 4:万能注入 payload' or '1'='1脱库所有用户

输入核心注入语句:' or '1'='1,提交后页面打印出数据库users表全部 6 条用户数据。

拆解拼接后的完整 SQL:

原始模板:

sql

SELECT * FROM users WHERE id='【用户输入】';

带入恶意输入后:

sql

SELECT * FROM users WHERE id='' or '1'='1';
逻辑拆解:
  1. 第一个'闭合id=后的原有单引号;
  2. or是 SQL 逻辑或,只要任意一侧条件成立,整条 where 语句结果为真;
  3. '1'='1是永久成立的恒真条件;
  4. 后端末尾自带的'和语句内'1的前引号配对,语法合法。

最终WHERE条件等价于WHERE true,查询返回 users 表全部记录,实现数据库信息泄露。

四、手工注入核心判断技巧总结

4.1 快速判断是否存在注入点(手工三步法)

  1. 数字测试:输入正常数字,确认页面能正常查询数据;
  2. 单引号报错测试:输入',页面出现数据库语法报错 → 大概率存在注入;
  3. 双引号抵消验证:输入'',报错消失、页面正常展示数据 → 确认漏洞可利用。

4.2 万能恒真 payload 作用

' or '1'='1是字符型 SQL 注入最基础利用语句,适用于单引号包裹字符串的查询场景,可一次性查询表内全部数据,是手工验证漏洞可用性的标准载荷。

4.3 区分数字型 / 字符型注入

  • 字符型(本次实验):查询参数用单引号包裹,必须用'闭合才能注入;
  • 数字型:参数无引号包裹,直接输入or 1=1即可实现脱库。

五、漏洞危害与防护方案

5.1 SQL 注入可造成的危害

  1. 敏感数据泄露:账号、密码、手机号、后台管理员信息全部脱库;
  2. 恶意篡改数据:更新、删除数据库内全部业务数据;
  3. 服务器提权:配合数据库高权限执行系统命令,拿下服务器控制权;
  4. 业务瘫痪:删除核心业务表,导致网站无法访问。

5.2 生产环境防护手段(开发必看)

  1. 使用预编译语句(参数化查询):PHP PDO、Java MyBatis 预编译,彻底隔离输入与 SQL 语句;
  2. 输入白名单过滤:ID 类参数仅允许数字,拒绝单引号、or、union 等特殊字符;
  3. 关闭详细数据库报错:线上环境统一返回自定义错误页面,禁止输出 SQL 语法报错;
  4. 最小权限数据库账号:Web 程序连接数据库账号仅分配查询权限,禁止 drop、alter 等高权限操作;
  5. 部署 WAF Web 应用防火墙:拦截携带注入特征的恶意请求。

六、实验总结

本文通过 DVWA Low 靶场完整演示纯手工识别 SQL 注入全流程,从正常访问、单引号报错探测、双引号漏洞确认,到万能语句批量读取数据库数据,完整复现字符型注入原理。 手工检测是渗透测试的基础,工具扫描仅作为辅助;只有理解底层 SQL 拼接逻辑,才能精准判断复杂场景下的注入漏洞,同时在开发中针对性规避此类高危安全缺陷。

拓展练习:可尝试 DVWA Medium、High 安全级别,对比不同过滤策略下手工注入的绕过思路,进阶学习 Union 查询、盲注等注入手法。

http://www.jsqmd.com/news/1138388/

相关文章:

  • 深入了解事件相关电位及其成分(三)
  • BPF工具实战:中断、SMP调用与缓存性能
  • Go 并发的七种数据竞争陷阱:Uber 从 1100 个 Race 修复中总结出的经验
  • 2026年,中建南方环境技术如何?
  • AI之后,核聚变迎来第二个“加速器”?
  • 06-高级模式与实战项目——05. 容器与展示组件
  • Pandas 1.5 数据分析实战:电影评分数据集 3 大统计维度与 2 种分组聚合
  • STM32 裸机 Blink 的坑 你确定你的向量表能跑起来
  • Claude Sonnet 5发布、Claude Code隐写术争议、零英伟达万亿模型 | 06.29-07.05 AI周报
  • 不教简笔画套路的创意美育,家长如何筛选班级
  • Agent 帮我写 CUDA(续):当 Self-Attention 遇上 Causal Mask 和 Cross-Attention
  • 【Bug已解决】Claude Code CLAUDE.md 报错 @include 循环引用解决方案
  • 计算机毕业设计之基于大数据的抖音音乐播放数据分析可视化
  • 印尼出海ERP技术选型:千岛业态下全链路跨境进销存最佳实践
  • Product Hunt 每日热榜 | 2026-07-06
  • ClaudeCode Auto模式:可信边界内的智能代码补全决策
  • OpenSPARC T1 vs T2 架构对比:8核32线程与8核64线程的微架构演进分析
  • 【Bug已解决】Codex CLI 报错 conversation interrupted 解决方案
  • 【单片机毕业设计】基于 STM32 的老人智能跌倒监护预警装置设计,基于单片机的多传感人体安全监测系统设计(018001)
  • JavaScript 展开运算符(Spread Operator)完全指南
  • 地理语义内容网络:地图型站点从空间点位到搜索资产的架构拆解
  • 遥感图像增强实战:OpenCV 4.8 实现 5 种空间域算法对比与效果量化
  • Kazumi:如何用5行代码打造你的专属动漫资源库?
  • 多旋翼机架设计实战:3种布局(X型/十字型/环形)性能对比与选型指南
  • 教资资料2026上合集/教资科一科二科/教师资格备考合集(可打印 下载)
  • Uber 全球办公网络自动化实践:Ansible 如何把 5000 台设备拉回“期望状态”
  • 01|OceanBase发布“湖库一体”AI数据库:杨冰称中国有机会定义下一代数据库范式
  • 基于时间序列特征工程和随机森林算法的入釜矿浆成分预测模型
  • Qt信号槽的几种连接方式:AutoConnection/DirectConnection/QueuedConnection/BlockingQueuedConnection
  • 【HarmonyOS学习笔记】2026-07-06 | 页面与数据5:实现页面跳转