43

绕过电子邮件格式过滤进行SQL注入

 5 years ago
source link: http://www.freebuf.com/articles/web/183516.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

—— 小编日常懵比

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

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

[email protected]=>有效
“a”@.com =>有效

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

dimaz [email protected] =>无效
“dimaz arno”@test.com =>有效

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

fuQ3Izv.jpg!web

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

ZrIZRf3.jpg!web

以下为测试所用payload列表:

MJf6BzR.jpg!webiA7jYvf.jpg!webu26vQni.jpg!web

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

总结

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

格式如下:

“injection_here”@email.com

例如:

“<script src=//xsshere?”@email.com

“1-’or’1'=’1”@email.com

最后,祝你好运!

*参考来源: medium ,FB小编 secist 编译,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK