文章总结: 本文系统梳理了SQL注入攻击的核心知识体系,涵盖数据库基础、注入原理、利用流程及实战案例分析。重点解析了HTTP头注入(如X-Forwarded-For、User-Agent)等高级技巧,并提供了黑盒/白盒测试方法论与安全建议,强调使用预编译语句和严格输入过滤。 综合评分: 85 文章分类: WEB安全,渗透测试,漏洞分析,实战经验,安全培训
第55天-SQL注入攻击深入剖析:从数据库原理到HTTP头注入实战
原创
萧瑶 萧瑶
AlphaNet
2026年2月27日 08:43 江苏
前言
在Web安全领域,SQL注入始终占据着OWASP Top 10的重要位置。本文将系统性地梳理SQL注入的核心知识体系,从数据库基础到注入原理,从利用过程到实战案例分析,帮助读者建立完整的SQL注入知识框架。
一、数据库基础知识回顾
1.1 核心概念
· 数据库结构层次:数据库名 → 表名 → 列名 → 数据
· 系统数据库:如MySQL的information_schema,存储元数据
· 数据库用户:权限分离(root、普通用户、应用用户)
1.2 关键信息
· 默认端口:MySQL(3306)、SQL Server(1433)、Oracle(1521)
· 敏感函数:version()、database()、user()、load_file()等
· SQL操作类型:SELECT(查)、INSERT(增)、UPDATE(改)、DELETE(删)
二、SQL注入产生原理
本质原因:代码中执行的SQL语句存在可控变量,且未经过严格过滤。
// 漏洞示例
$id = $\_GET['id'];
$sql = "SELECT \* FROM users WHERE id = $id"; // 直接拼接变量
三、影响SQL注入的六大因素
因素 说明 实例
数据库类型 决定语法、权限、函数差异 MySQL、MSSQL、Oracle
操作方法 增删改查影响注入方式 SELECT可联合查询,DELETE可能无回显
参数类型 数字型/字符型/搜索型 字符型需闭合引号
数据格式 加密、编码、序列化 Base64、JSON、URL编码
提交方式 GET/POST/COOKIE/HEADER HTTP头注入场景
回显处理 有无回显、报错信息 盲注、报错注入、布尔注入
四、SQL注入标准利用流程
4.1 核心判断技巧
· 数据库类型:利用特定函数、注释符、报错信息
· 参数类型:加引号测试、数字运算测试
· 回显判断:and 1=1 / and 1=2 对比页面差异
五、增删改查场景的注入分析
5.1 不同操作对应的业务场景
操作 典型功能 注入特点
SELECT 用户登录、新闻查询 联合查询、报错注入
INSERT 用户注册、评论添加 通过插入内容注入
UPDATE 个人信息修改 更新语句中构造payload
DELETE 删除操作 无回显,需时间盲注
5.2 案例:广东工业大学SQL注入(SRC)
在查询功能中发现参数未过滤,通过联合查询获取管理员账户信息。关键点在于理解查询语句结构,构造闭合payload。
六、HTTP头注入深度解析
6.1 User-Agent注入
场景:网站记录用户设备信息,将UA存入数据库
-- 后台可能执行的语句
INSERT INTO logs (ua, ip) VALUES ('$ua', '$ip');
-- 注入payload
' UNION SELECT user(),database()#
6.2 Cookie注入
场景:根据Cookie中的用户ID查询信息
$id = $\_COOKIE['userid'];
$sql = "SELECT \* FROM users WHERE id = $id";
6.3 X-Forwarded-For注入(重点)
场景:记录IP、限制访问频率等功能
实战案例:钓鱼网站XFF头注入(附完整过程)
案例复盘:钓鱼网站的XFF注入之旅
- 信息收集阶段
· 目标:某游戏钓鱼网站
· 指纹识别:宝塔+Linux
· 端口扫描:80开放,10010端口403
- 注入点发现
· 常规参数和UA测试无果
· 推测网站记录访问者IP → 尝试XFF头
· 时间盲注测试:X-Forwarded-For:’ and sleep(2)#
- SQLMap自动化利用
# 保存请求包到a.txt后执行
sqlmap -r a.txt --batch --level 4 -D 数据库名 -T 表名 -C username,password --dump
- 后续扩展
· 获取管理员账号密码
· 尝试XSS盲打(前端有过滤函数ts())
· 扫描同IP其他站点
· 获得sql-shell权限
经验总结:当常规参数无果时,多思考业务逻辑可能记录的数据点(IP、UA、Referer等)
6.4 Referer注入
场景:防盗链、来源统计
INSERT INTO referer\_log (url) VALUES ('$referer');
七、高级注入技巧
7.1 加密数据+JSON注入
案例:某应用将参数JSON加密后传输
· 需先解密payload,再加密发送
· 自动化工具需配合tamper脚本
7.2 403绕过技巧
场景:服务器对特定路径有访问限制
· 利用HTTP头伪造(X-Original-URL等)
· 结合注入点在权限限制前执行
八、黑盒/白盒发现SQL注入方法论
黑盒测试
-
对所有参数(GET/POST/COOKIE/HEADER)进行fuzz
-
根据功能推测可能的数据操作(注册→INSERT,查询→SELECT)
-
观察页面差异、响应时间、报错信息
白盒测试
· 追踪用户输入流向
· 查找SQL语句拼接点
· 审计过滤函数有效性
九、学习资源与扩展阅读
-
XFF头注入深度解析:记一次对钓鱼网站的XFF头注入
-
JSON注入实战:加密还原+JSON注入案例
-
403绕过技巧:HTTP头-403绕过
-
吉林工业职业技术大学案例:Cookie注入Bypass WAF
结语
SQL注入不仅是简单的’ or 1=1,它考验的是对数据库机制、业务逻辑、HTTP协议的深入理解。在实战中,多思考”数据可能从哪里来,到哪里去”,往往能发现意想不到的注入点。
安全建议:
· 使用预编译语句(参数化查询)
· 严格过滤用户输入
· 最小权限原则分配数据库账户
· 定期进行安全审计
注:本文涉及的技术方法仅用于安全研究和授权测试,严禁用于非法用途。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:AlphaNet 萧瑶 萧瑶《第55天-SQL注入攻击深入剖析:从数据库原理到HTTP头注入实战》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论