一直有好几个朋友给我说,用ie6浏览刀城,有时候页面会卡死。最开始一直以为是ie6不兼容dedecms的原因,但是有朋友说不可能,用ie6看别的dede都是ok的。
前段时间也比较忙,今天上午特意下载了一个ie6,认认真真检查了一下,想看看到底是什么问题。
一直以为是兼容的问题,那么就抓包了。因为有朋友给我说过,浏览“利用双字节编码突破PHP单引号转义限制进行SQL注入”这篇文章会被卡死,那就测试它。一抓包,发现到了需要下载那个png图片的时候,ie就卡死了,正好以前听说过ie6和png的兼容问题,以为是png惹的祸,但是我用ie6打开别的文章却是ok的啊。排除这种可能。既然这样,那么就是文章内容的关系罗。
测试便知,我把这篇文章的内容清空,替换为“test”,生成页面,用ie6成功打开。果然是内容的问题。
看看内容是什么
今天看了黑防2009精华本下册《双字节编码:PHP的隐形杀手》一文,深受启发。
当php.ini中magic_quotes_gpc被设置为on时,提交的参数会被转义,例如,单引号会被转义成了\’。一下子截断了字符型注入的路。
GBK双字节编码:一个汉字用两个字节表示,首字节对应0x81-0xFE,尾字节对应0x40-0xFE(除0x7F),刚好涵盖了\对应的编码0x5C。
0xD5 0x5C 对应了汉字“誠”,于是 %d5%5c 经URL解码后为“誠”。
于是提交参数 %d5′ ,经PHP自动转义后为 %d5%5c%27 (’被转义为了\’,对应%5c%27),再经URL解码后,就变成了 誠’ 。
这样就突破了单引号转义的限制。
其它都是正常的html标记,我首先就怀疑span里的class标记,因为这个标记是采集时没有去除的残留。清除span,生成,ie6成功打开了这个页面。
原来是采集时没有清除干净css标记所致,哎,另一出“人间冤案”。
刚刚再次发现一个假死的原因,如果图片的长宽设置过大,也会造成页面假死,杯具的ie6.
欢迎各位朋友留言帮我指出用ie6不能打开的刀城安全的页面,在这里多谢了。
浏览刀城安全(www.daokers.cn)建议ie6以上版本的浏览器
daokers
2010年11yue11日