在此之前先给大家讲个冷笑话。这篇文章原文乍一看是英文的,但仔细一看我就懵了。没错!它并不是英文,而是印度尼西亚文。还好内容并不多,不然还不得吐血~

—— 小编日常懵比

前不久,我加入了一家印度尼西亚金融科技公司的bug赏金计划。经过一番测试,我在“忘记密码”功能中找到了一个电子邮件输入框。依据经验,我开始尝试以下输入。

首先,我尝试了不带空格的输入:

[email protected]=>有效

“a”@.com =>有效

然后,尝试了带空格的输入:

dimaz [email protected] =>无效

“dimaz arno”@test.com =>有效

从以上结果我们可以看出,当地址中出现空格将会被过滤,而加了双引号就会被认为是一个完整的字符串则为合法。这符合会话中的RFC 3696邮件检验标准。

1_jUGRtYF1etlQRPeblg0N_A.png

但字符“(“ 和 “)”并不会被阻止,这对于构造sql注入payload非常“有用”。

2_gV5eDt2NJ4oAj3Wt-1BOEw.png

以下为测试所用payload列表:

3_7LgySHHtXqMIYN3WPZMv1Q.png4_Dtiy57WE51LjF1QupxsUhQ.png5_sC2ggvVQgjJFsl0GkaXEeQ.png

通过枚举最终确定数据库字符长度为10。

总结

当你在测试中碰到了一些限制特殊字符的电子邮件过滤器,你可以像我一样尝试在@符之前添加双引号,这可能会帮你绕过过滤机制

格式如下:

injection_here”@email.com

例如:

“<script src=//xsshere?”@email.com
“1-’or1'=’1”@email.com

最后,祝你好运!

*参考来源:medium,FB小编 secist 编译,转自FreeBuf

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。