首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用超长编码发布数据以测试漏洞?

如何使用超长编码发布数据以测试漏洞?
EN

Stack Overflow用户
提问于 2012-10-25 14:33:18
回答 2查看 573关注 0票数 2

我最近了解到,当overlong encodings cause a security risk没有被正确验证时。根据前面提到的文章中的答复:

例如,字符<通常表示为字节0x3C,但也可以使用超长的UTF-8序列0xC0xBC(甚至更多冗余的3-或4字节序列)表示。

和:

如果您接受这个输入并在基于Unicode的基于字节的工具中处理它,那么在该工具中使用的任何字符处理步骤都可能被回避。

这意味着如果我对使用超长编码的字符串使用htmlspecialchars,那么输出仍然可以包含标记。我还假设您可以发布类似的字符(如";),这些字符也可以用于SQL注入。

也许是我,但我相信这是一种安全风险,相对较少的人考虑到,甚至知道。我已经编码多年了,直到现在才发现。

无论如何,我的问题是:我可以用什么工具发送超长编码的数据?熟悉这种风险的人员:您如何在网站上进行测试?我想贴一堆超长字符到我的网站,但我不知道如何做到这一点。

在我的情况下,我主要使用PHP和MySQL,但是我真正想知道的是测试工具,所以我想后端的情况并不重要。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-25 14:36:31

要测试您的站点是否易受攻击,请使用curl对页面使用post以及对utf8 long和post utf8 long编码信息的编码(您可以为此使用文本编辑器,方法是将文本编辑器编码为utf8 long,以便使用curl和php文件发布的文本以long表示)

http://php.net/manual/en/function.curl-setopt.php

票数 1
EN

Stack Overflow用户

发布于 2012-10-26 10:30:20

我想贴一堆超长字符到我的网站,但我不知道如何做到这一点。

除了使用curl等手动请求工具进行测试外,浏览器内测试的一个简单解决方法是重写表单提交的编码。使用例如Firebug/Chrome调试器,修改正在测试的表单以添加属性:

代码语言:javascript
复制
accept-charset="iso-8859-1"

您现在可以键入字符,当编码为Windows代码页1252(*)时,这些字符将成为您想要的UTF-8超长字节序列。

例如,在表单中输入café,您将得到字节序列c a f 0xC3 0xA9,因此应用程序将认为您键入了café。输入À¼foo,序列0xC0 0xBC f o o将被提交,这可以解释为<foo。请注意,您不会在任何输出页面源中看到<foo,因为现代浏览器不会解析网页中超长的UTF-8序列,但是您可能会得到�foo或其他一些不正确的指示。

要更深入地访问医生输入并检查webapp的输出,请参阅专门的sec工具(如Burp )。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13070919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档