Web 安全手工识别 SQL 注入全实战(DVWA Low 完整复现 + 底层源码拆解 + 踩坑防护)
前言很多网络安全初学者刚接触渗透测试时一上来就直接使用 Sqlmap 自动化工具跑注入完全忽略手工判断注入点这一核心基础能力。在等保测评、企业渗透实战中大量 WAF 会直接拦截工具特征流量此时只能依靠手工 Payload 判断漏洞同时面试、课程实训中手工注入原理也是高频考点。本文基于 DVWA 1.10 靶场 Low 安全等级完整复现从探测、验证到利用的全套手工 SQL 注入流程附带每一步拼接后的完整 SQL 语句、后端危险源码、实验截图、漏洞成因、线上真实防护方案解决大部分新手只懂操作不懂原理的问题全文实操可 1:1 复现。 实验环境PHPStudyDVWA1.10MySQL5.7安全等级Low无任何输入过滤适合入门理解字符型注入一、SQL 注入漏洞底层原理1.1 漏洞产生核心原因Web 程序将用户可控输入URL GET 参数、表单 POST 数据、Cookie不做过滤、转义、预处理直接字符串拼接进后端 SQL 查询语句攻击者可通过特殊符号破坏原有 SQL 语法结构篡改查询逻辑。 DVWA Low 级别 SQL 注入页面后端 PHP 原始危险代码php运行?php // 获取前端传入的id参数无过滤无转义 $id $_GET[id]; // 直接拼接用户输入存在致命注入漏洞 $query SELECT * FROM users WHERE id . $id . ; // 直接执行拼接后的SQL语句 $result mysqli_query($db, $query); ?这段代码是线上最典型的高危写法$_GET[id]接收用户可控参数后未做任何校验直接拼接进 SQL 字符串给注入提供了完整利用空间。1.2 字符型注入判定关键单引号 的作用MySQL 数据库中字符串类型字段的值必须使用单引号包裹闭合。 原有查询模板固定格式WHERE id用户输入输入提前闭合原有引号造成 SQL 引号数量不匹配抛出语法报错输入输入的两个单引号一个闭合原有语句另一个和后端末尾单引号配对抵消语法恢复正常以此确认注入点存在。二、实验前置环境配置启动 PHPStudy 集成环境开启 Apache 与 MySQL 服务浏览器访问 DVWA 首页使用默认账号 admin/admin 登录左侧菜单栏找到Setup / Reset DB点击重置数据库恢复原始测试数据进入DVWA Security页面安全级别下拉选择Low点击提交保存左侧导航切换至SQL Injection靶点页面进入 User ID 输入测试界面。三、分步手工探测 SQL 注入步骤 1正常业务逻辑测试确认查询规则操作在 User ID 输入框输入数字1点击 Submit 提交 页面返回结果ID:1First name:adminSurname:admin 拼接后执行 SQLsqlSELECT * FROM users WHERE id1;作用确认页面接收 id 参数、正常查询 users 表数据摸清基础查询结构为后续异常测试做对照。步骤 2输入 1通过数据库报错初步判定注入风险Payload 输入1页面返回 MySQL 原生语法报错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拼接后错误 SQLsqlSELECT * FROM users WHERE id1;报错原理拆解 原始语句末尾自带单引号用户输入的1多增加了一层闭合引号整条 SQL 出现奇数单引号语法结构错乱数据库直接抛出错误并回显到页面。关键判定点网站直接输出数据库底层报错信息说明用户输入内容直接参与 SQL 拼接存在 SQL 注入高危风险。步骤 3输入 1抵消引号消除报错实锤注入漏洞存在Payload 输入1页面现象无报错正常返回 ID1 的 admin 用户数据 拼接后完整 SQLsqlSELECT * FROM users WHERE id1;逻辑说明第一个闭合id后的原有单引号第二个和后端语句末尾自带的单引号配对整条 SQL 引号数量匹配语法合法不再抛出错误。 这一步是区分 “页面报错” 和 “可利用注入点” 的关键能抵消报错即可确认漏洞可被攻击者利用。步骤 4万能注入 Payload or 11 批量读取全表数据Payload 输入 or 11页面现象一次性打印 users 表内全部 6 条测试用户数据admin、Gordon、Hack、Pablo、Bob、user 拼接后最终执行 SQLsqlSELECT * FROM users WHERE id or 11;逐段拆解注入逻辑开头提前闭合id后的原有单引号跳出原有查询条件orSQL 逻辑或运算符任意一侧条件成立整条 WHERE 判断结果为 True11永久恒真条件永远成立末尾和后端自带单引号配对保证 SQL 语法无错误。 等效查询逻辑WHERE true忽略原有 ID 限制查询 users 表内全部记录实现数据库批量信息泄露。四、手工注入标准化判断流程4.1 字符型注入三步探测法原创实操总结正常数字测试输入纯数字确认页面存在参数查询功能单引号报错探测输入页面输出 SQL 语法报错 → 存在注入风险双引号抵消验证输入报错消失、页面正常展示数据 → 确认漏洞可利用。4.2 字符型 / 数字型注入快速区分字符型注入本次实验场景参数被单引号包裹必须使用闭合原有语句才能注入数字型注入参数无引号包裹直接输入or 11即可脱库无需额外单引号。4.3 手工 Payload 拓展除基础 or 11外同场景可用等效 Payload 验证漏洞plaintext or 22 or 11-- - admin or 11#-- -与#为 MySQL 注释符可注释掉后端原有 SQL 剩余语句避免语法冲突。五、SQL 注入真实线上危害核心业务数据泄露用户账号、明文 / 哈希密码、手机号、身份证、订单数据全部脱库恶意篡改、删除数据通过 UPDATE、DELETE 语句清空业务数据表造成企业业务瘫痪服务器权限接管数据库账号拥有高权限时可通过into outfile写入 Webshell完全控制服务器合规处罚等保 2.0 明确将 SQL 注入列为高危漏洞存在该漏洞未修复会面临整改、罚款。六、生产环境完整防护方案6.1 代码层根治最优方案从根源杜绝注入使用参数化预编译查询PDO 预处理彻底分离用户输入与 SQL 语句示例安全 PHP 代码php运行?php $stmt $db-prepare(SELECT * FROM users WHERE id?); $stmt-bind_param(s, $_GET[id]); $stmt-execute(); ?预编译会将 SQL 模板与用户输入分开解析用户输入仅作为参数值不会被数据库解析为 SQL 指令。6.2 输入校验与过滤ID 类数字参数使用正则白名单仅允许 0-9 数字拦截单引号、or、union、#、-- 等特殊字符文本输入对单引号、双引号、反斜杠进行转义处理。6.3 服务器与运维层面防护关闭线上详细 SQL 报错页面统一返回自定义 404 / 错误提示禁止向前端输出数据库原生报错数据库账号最小权限Web 业务连接账号仅授予 SELECT 查询权限禁止 DROP、ALTER、FILE 等高危权限部署 WAF 应用防火墙拦截携带单引号、or、union 等注入特征的恶意请求定期渗透测试上线前手工 工具结合扫描提前修复注入漏洞。七、实验踩坑总结切换 DVWA 安全级别后未重置数据库旧数据干扰测试结果每次实验前务必 Reset DBPayload 空格缺失or11无空格会导致 SQL 语法错误or 前后必须保留空格靶场 MySQL 服务未启动页面无数据返回先检查 PHPStudy 数据库服务状态线上环境打印数据库报错攻击者可利用报错信息判断表名、字段名大幅提升注入成功率线上必须关闭。八、课后拓展练习将 DVWA 安全级别调整为 Medium分析后端数字过滤逻辑寻找绕过注入方法学习 Union 联合查询注入通过手工 Payload 爆库名、表名、字段名学习布尔盲注、时间盲注应对无回显、无报错的注入场景对比 Sqlmap 自动化注入与手工注入的优缺点总结实战中两者适用场景。

相关新闻

【单片机毕业设计】基于 STM32 的智能护眼台灯监测控制系统设计,基于单片机的坐姿矫正与久坐提醒智能台灯设计(018401)

【单片机毕业设计】基于 STM32 的智能护眼台灯监测控制系统设计,基于单片机的坐姿矫正与久坐提醒智能台灯设计(018401)

文章目录 20 个相关毕业设计备选题目项目研究背景摘要总体方案一、核心硬件清单及选型说明二、硬件整体搭建方案 核心功能一、基础交互功能二、核心传感与自动控制功能三、辅助自定义配置功能 技术路线项目演示关于我们项目案例源码获取 博主介绍:✌️码农一枚 &…

2026/7/7 1:57:51阅读更多 →
06-高级模式与实战项目——07. Factory模式 - 动态组件创建

06-高级模式与实战项目——07. Factory模式 - 动态组件创建

07. Factory模式 - 动态组件创建 概述 Factory 模式是一种根据条件动态创建和返回不同组件的设计模式。它允许在运行时根据配置、类型或状态决定渲染哪个组件,提高代码的灵活性和可维护性。 维度内容What根据条件动态创建和返回不同组件的模式Why根据配置或状态动…

2026/7/7 1:57:51阅读更多 →
《重启日记》第十五周|工具提效挤占写作时间,少更也守住长期节奏

《重启日记》第十五周|工具提效挤占写作时间,少更也守住长期节奏

一、本周数据全景总览(06.29-07.06)周次阅读量原力值周排名第十四周141211961054第十五周42712062868十五周成绩单:总访问量稳步累加,原创文章累计 139 篇,连续更新 15 周。原力值从 1196 上涨至 1206,连续…

2026/7/7 1:57:51阅读更多 →
AI和集成电路怎么选?2026届新工科保研别把赛道规划搞反了

AI和集成电路怎么选?2026届新工科保研别把赛道规划搞反了

2026届推免准备进入关键阶段,很多新工科学生都会纠结一个问题:人工智能(AI)和集成电路(IC)都很热门,到底该往哪个方向规划?这两条赛道都属于近几年高校重点布局的新工科方向&#xf…

2026/7/7 3:02:57阅读更多 →
做科研的你,会为了豆包付费吗?

做科研的你,会为了豆包付费吗?

近期豆包开启分层付费模式引发全网热议,大量普通用户围绕几十元年费争论性价比,不少人直言只是写文案、整理琐事,免费版完全够用,付费不值。但与此同时,医学院教师、临床医生、硕博科研群体却早已形成共识:…

2026/7/7 3:02:57阅读更多 →
猫抓Cat-Catch终极指南:5分钟学会浏览器视频下载神器

猫抓Cat-Catch终极指南:5分钟学会浏览器视频下载神器

猫抓Cat-Catch终极指南:5分钟学会浏览器视频下载神器 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为在线视频无法下载而烦恼吗&…

2026/7/7 3:02:57阅读更多 →
[特殊字符]【算法日记15】LeetCode 128. 最长连续序列:排序法 vs 哈希表的底层真相

[特殊字符]【算法日记15】LeetCode 128. 最长连续序列:排序法 vs 哈希表的底层真相

📍 题目背景今天咱们来手撕 LeetCode 上一道极具迷惑性的经典大题:[128. 最长连续序列]。 这道题不仅考察了常规的数组操作,更是一块检验程序员底层功底的绝佳“试金石”!题目最后还有一句灵魂要求:“你必须设计并实现…

2026/7/7 3:02:57阅读更多 →
Wayback Machine浏览器扩展:拯救消失网页的终极免费工具

Wayback Machine浏览器扩展:拯救消失网页的终极免费工具

Wayback Machine浏览器扩展:拯救消失网页的终极免费工具 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 你…

2026/7/7 3:02:57阅读更多 →
AI 排查报错别再贴 5000 行日志:一套“错误链 + 环境差异 + 最小复现”模板

AI 排查报错别再贴 5000 行日志:一套“错误链 + 环境差异 + 最小复现”模板

摘要 AI 排查报错时,最怕的不是日志太少,而是日志很多却没有上下文。只贴一段异常栈,AI 往往只能猜配置、猜依赖、猜重装。下面这套“错误链 环境差异 最小复现”模板,能把模糊报错整理成可验证的问题,让 AI 先列证据…

2026/7/7 2:57:57阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/7 2:56:31阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/7 1:03:28阅读更多 →
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8…

2026/7/7 0:02:41阅读更多 →
国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot) 🌐 演示地址:http://ruoyioffice.com | 📦 源码1GitHub:ruoyi-office | 📦 源码2GitCode:ruoyi-o…

2026/7/7 0:02:41阅读更多 →
CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…

2026/7/7 0:02:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →