不可见url编码解码-粗略探讨

前言

关于URL,一般的URL只包含英文字母、阿拉伯数字和某些标点符号,对于类似中文、希腊字母等特殊值,还有一些请求文本中含有?&等特殊字符时,必须先进行URL编码后再能请求。日常使用中,我们在URL中直接输入中文,浏览器会自动帮我们进行编码处理,所以我们能看到URL中的中文,而copy时会展示一大串编码。

探讨

既然有编码,那肯定也会有解码的。但URL编码只是简单的以%十六进制的形式出现的,规则为百分号+编码对象的ascii码的十六进制。不过实际上任意的百分号加两位十六进制,都会当成URL编码,然后在后端都会尝试进行解码。
但常规的可见字符范围并不大,将不可见的编码范围或者是无规则的一串合规范的字符串进行解码时,会得到一些奇奇怪怪的字符,而且解码过后无法进行编码,过程不可逆。而对于这种情况,不同的编码语言是否会当成一个错误,从而产生报错,现在来简单测试几种语言。

%e2为例:

在第三方解码平台:

PHP:

Java:

javascript:

测试之后,对觉得最“万金油”的javascript发生报错感到惊讶。然后这有什么用呢,还有类似go这样的建站语言还没有进行测试呢?但从js发生报错来看,URL解码不成功会导致出错似乎从猜想变成现实了。

不过细致的一点是,在使用gb2312这样的解码编码时,文本会变成可见的?,而且对其进行编码会得到%3f

应用

个人在测试中,觉得URL编码应用这块对于POST类型似乎不起作用,可能还没找到例子。我从几大搜索引擎开始测试,试试他们是怎么处理这些不可见URL编码字符的。我继续使用%e2来进行测试,要注意的是不能直接从搜索框内进行搜索,因为浏览器会对%e2中的%进行编码,导致搜索的是%25e2,这样会解码成功的,因此需要在URL中进行修改。

千万注意得把URL中的%25e2改成%e2

谷歌
目测是根据gbk的编码来展示的,解码变成了?
https://www.google.com/search?q=%e2&oq=admin&aqs=chrome..69i57j0l3j69i60l4.988j0j7&sourceid=chrome&ie=UTF-8

百度、hao123、yahoo
修改过后,闪太快了,又回到了百度的主页,使用bp抓包进行查看。好像发生了一点奇怪的事,直接闪回主页了,而不是显示搜索不到内容。与百度搜索同源的hao123也是一样会跳转到主页。

bing
必应尽管修改了URL的%25e2%e2,显示的搜索结果为正常的%e2,好像有没有解码都一样,十分正常。

搜狗
搜狗似乎是utf解码的,页面看起来都像是乱码的,而且搜索出来的内容点进去都是乱码的。

新浪
新浪搜索就很灵性,这是我在挖洞的过程中给碰到的,因此往后的测试中也会考虑使用%e2这样的字符去碰报错。漏洞已提交,低危,因此贴一张图。

最后总结为本文章是水文章,仅此发往博客展示一下水功夫。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注