如何绕过电子邮件格式过滤进行SQL注入
字数 691 2025-08-18 11:37:33
绕过电子邮件格式过滤进行SQL注入技术分析
1. 背景与发现
在参与印度尼西亚某金融科技公司的漏洞赏金计划时,发现"忘记密码"功能中的电子邮件输入框存在SQL注入漏洞。该输入框实现了RFC 3696标准的电子邮件格式验证,但存在可被绕过的过滤机制。
2. 电子邮件格式验证分析
2.1 合法格式测试
a@a.com→ 有效"a"@.com→ 有效dimaz arno@test.com→ 无效(含空格被过滤)"dimaz arno"@test.com→ 有效(引号包裹的含空格字符串被接受)
2.2 特殊字符测试
发现字符 ( 和 ) 不会被阻止,这对构造SQL注入payload非常有利。
3. 绕过技术
3.1 基本绕过格式
在@符号前添加双引号可绕过过滤机制:
"injection_here"@email.com
3.2 实际攻击示例
- XSS攻击示例:
"<script src=//xsshere?"@email.com
- SQL注入示例:
"1-'or'1'='1"@email.com
4. SQL注入技术细节
4.1 确定数据库信息
通过枚举技术成功确定数据库字符长度为10。
4.2 有效payload列表
(注:原文未提供具体payload列表,但提供了确定数据库字符长度的方法)
5. 防御建议
- 对所有用户输入实施严格的参数化查询
- 不要仅依赖客户端格式验证
- 对电子邮件地址中的特殊字符进行更严格的过滤
- 实现服务器端的多层验证机制
- 考虑使用正则表达式进行更精确的电子邮件格式验证
6. 总结
当遇到限制特殊字符的电子邮件过滤器时:
- 尝试在@符号前添加双引号
- 测试括号等特殊字符是否被过滤
- 构造符合RFC标准但包含恶意代码的电子邮件格式
这种技术特别适用于实现了RFC 3696但不完善的电子邮件验证系统。