标签归档:utf-7

浅谈 utf-7 在Ie浏览器的魔术效果

0x01 utf-7简介

我不会告诉你那些枯燥的介绍(如果你想,请自行google)。

比如XSS 跨站可能用到的字符 ” < “、” ” “ ,即小于号 和双引号(我们把这2个字符的其中一个转换成utf-7字符)

我们首先把小于号也就是< 转换为 16进制 => 0x003c

然后换算成2进制 0000 0000 0011 1100

然后组合2进制的位数,以6个为一组,进行组合,少则后面补0

000000 000011 110000

接着 000000 为 A字符 超过26个大写字母,就以小写字母开头 a字符

所以上面3组 分别为 ADw

0x02 utf-7的实际效果

<html>
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-7">
</head>
<body>
<div>
  +ADw-script+AD4-
    alert( document.cookie );
  +ADw-/script+AD4-
</div>
</body>
</html>

上面的ADW 字符就是我们说的<字符 同理 AD4也就是>字符,在IE9浏览器可以运行,火狐测试运行不了.

0x03 总结

经过测试,我发现如果以下代码,未指定charset或者content 没有

<meta http-equiv="content-type" content="text/html;charset=utf-7">
 
<-- 第一种情况
<meta http-equiv="content-type" content="text/html;">
-->
 
<-- 第二种情况
<meta http-equiv>
-->

以上2种情况 都攻击不了(可能我们默认的字符集是gbk与国外某些默认的字符集不一样),所以设置好charset 就可以防止此类攻击的发生。