首先,我尝试了不带空格的输入:
a@a.com=>有效
“a”@.com =>有效
然后,尝试了带空格的输入:
dimaz arno@test.com =>无效
“dimaz arno”@test.com =>有效
从以上结果我们可以看出,当地址中出现空格将会被过滤,而加了双引号就会被认为是一个完整的字符串则为合法。这符合会话中的rfc 3696邮件检验标准。
但字符 “(“ 和 “)”并不会被阻止,这对于构造sql注入payload非常“有用”。
以下为测试所用payload列表:
通过枚举最终确定字符长度为10。
总结
当你在测试中碰到了一些限制特殊字符的电子邮件过滤器,你可以像我一样尝试在@符之前添加双引号,这可能会帮你绕过过滤机制。