如何绕过电子邮件格式过滤进行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 实际攻击示例

  1. XSS攻击示例:
"<script src=//xsshere?"@email.com
  1. SQL注入示例:
"1-'or'1'='1"@email.com

4. SQL注入技术细节

4.1 确定数据库信息

通过枚举技术成功确定数据库字符长度为10。

4.2 有效payload列表

(注:原文未提供具体payload列表,但提供了确定数据库字符长度的方法)

5. 防御建议

  1. 对所有用户输入实施严格的参数化查询
  2. 不要仅依赖客户端格式验证
  3. 对电子邮件地址中的特殊字符进行更严格的过滤
  4. 实现服务器端的多层验证机制
  5. 考虑使用正则表达式进行更精确的电子邮件格式验证

6. 总结

当遇到限制特殊字符的电子邮件过滤器时:

  1. 尝试在@符号前添加双引号
  2. 测试括号等特殊字符是否被过滤
  3. 构造符合RFC标准但包含恶意代码的电子邮件格式

这种技术特别适用于实现了RFC 3696但不完善的电子邮件验证系统。

绕过电子邮件格式过滤进行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 基本绕过格式 在@符号前添加双引号可绕过过滤机制: 3.2 实际攻击示例 XSS攻击示例: SQL注入示例: 4. SQL注入技术细节 4.1 确定数据库信息 通过枚举技术成功确定数据库字符长度为10。 4.2 有效payload列表 (注:原文未提供具体payload列表,但提供了确定数据库字符长度的方法) 5. 防御建议 对所有用户输入实施严格的参数化查询 不要仅依赖客户端格式验证 对电子邮件地址中的特殊字符进行更严格的过滤 实现服务器端的多层验证机制 考虑使用正则表达式进行更精确的电子邮件格式验证 6. 总结 当遇到限制特殊字符的电子邮件过滤器时: 尝试在@符号前添加双引号 测试括号等特殊字符是否被过滤 构造符合RFC标准但包含恶意代码的电子邮件格式 这种技术特别适用于实现了RFC 3696但不完善的电子邮件验证系统。