iframe的防插破解

作者:空虚浪子心

看了Monyer的文章:
《iframe的防插与强插(二)》
http://hi.baidu.com/monyer/blog/item/108c718d9aedcf15b21bba56.html

代码如下:

<script>
window.onload = function(){
if(top!=self){
var f = document.createElement("form");
f.action=location;
f.target="_parent";
document.body.appendChild(f);
f.submit();
}
};
</script>

强制提交,我仔细看了这篇文章,后来实践了下,发现两个onload会后面的覆盖前面的onload。

并且防御代码中在操作”body”。

所以这段代码一定是应用于页面最下面。

再看了看之前的

《iframe的防插与强插》

http://hi.baidu.com/monyer/blog/item/1551b68f453f78e9f11f3667.html

发现攻击者至少可以控制一段JS,所以才可以“强插”。

最后Monyer给出了一个方案。

不过仔细看看,还是有很大问题的。

昨晚在YY,JS里有个SLEEP这个函数,让后面的代码等上“半年”才执行,那他的方案就失效了。

于是测试,居然成功后。

早上和大家聊这个事情,被狠狠的打击了下,原来JS根本没这个函数。。。那后面的的确没执行了(JS出错)。囧。。。

经过仔细研究,终于想到了破解的方法。HOOK。。。

看代码,我把monyer的代码放进去,然后不让他执行顺利。

<head>
</head>
<body>
呵呵。。。

</body>
<script>

document.createElement = function(test)
{
var f  =  new Object();
f.action=location;
f.target="_parent";

f.submit = function (){};
return f;
}
document.body.appendChild = function(test){}

window.onload = function(){alert(1);}

//----------------------------下面是Monyer的方法。原样copy。
window.onload = function(){
if(top!=self){
var f = document.createElement("form");
f.action=location;
f.target="_parent";
document.body.appendChild(f);
f.submit();
}
};
//广告时间http://www.inbreak.net
alert('hackedbykxlzx');
</script>

做一个类,HOOK掉这个方法里所有用掉的东西。。。嘿嘿。。。同时保证后面的JS正确执行。

相关日志

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

发表评论