web安全—浏览器的进制

浏览器的进制

字符的ascii码值可以转化为进制形式。可以用来绕过XSS filter。
  1. HTML属性值中的进制使用 。十进制使用&#97(字符a); 表示,&#作为前缀,;作为后缀,后缀也可以没有。
    如果要使用十六进制表示,则使用a
    1 <img  src=@ onerror=&#x61;lert&#40"\u6211"&#41; />

    会自动解析为:

    <img src="@" onerror="alert(&quot;\u6211&quot;)">
     
  2. css属性名和属性值中的进制使用。完全兼容HTML的进制表示方式,另外可以使用\ 作为16进制数值前缀。
    使用\ 16进制形式时属性名和属性值之间的:的冒号要保留。
    比如
    <style>
    a{ background:red; }
    </style>

    可以用\ 16进制表示

    1 <style>
    2 a{  \62\61\63\6b\67\72\6f\75\6e\64:\0072\0065\0064; }
    3 </style>

     

  3. javascript字符串中的进制使用。八进制用\56表示,十六进制用\x5c表示,多字节字符编码只能用十六进制Unicode编码,表现形式为:\u6211
    document.write("<\x69mg src=@ onerror=\x61lert(\"\u6211\51\"\51 />");

    执行的时候会自动解码为 

    <img src=@ onerror=alert("我") /> 

 

posted @ 2014-04-08 14:42  寻图  阅读(892)  评论(2编辑  收藏  举报