最近研究XSS,根据etherDream大神的博客 延长XSS生命周期 写了一个子页面父页面相互修改的demo。

一、 子页面、父页面相互修改——window.opener、window.open

在父页面修改子页面,是用到了window.open函数:

<script>
var target_page=window.open("parent-call.html", "");
target_page.document.write('我被亲爹重写了!');
</script>

在子页面修改父页面的话,用到的是window.opener函数:

<script>
if(window.opener){
window.opener.document.write('啦啦啦,我是坏蛋儿子,我把亲爹重写了')
}
else{
alert('我亲爹是谁?不知道!')
}
</script>

在调用window.opener.document修改父页面元素的时候,先检查了一下window.opener是否存在。这是因为子页面不一定存在opener,比如说父页面直接跳转到子页面(此时父页面已经不存在了)

二、 iframe子页面和父页面的相互修改——window.frames、window.parent

iframe标签在页面中是个比较神奇的存在,是存在于当前页面中的另一个页面,是两个完全不同的window。

iframe修改父页面,调用了window.parent:

<script type="text/javascript">
window.parent.document.write('我是坏孩子,我修改了亲爹')
</script>

父页面修改iframe子页面,调用了window.frames[]:

<script>
window.frames['change_by_father'].contentWindow.document.write('来自父页面的修改') //change_by_father为frame的ID
</script>

修改子页面的时候,需要注意的一点是iframe的document并不直接属于当前frame,而是属于contentWindow。

三、 XSS传染

我所理解的XSS传染是利用如上的小技巧,把恶意代码注入到用户打开的其他页面中。以小漏洞控制大场面,在钓鱼,XSS扩大攻击中会有比较突出的表现。

本来没准备专门去写demo的,昨天晚上看的很high,不知不觉就把demo写好了- -算是以一种比较逗的语气解释了相关的知识,欢迎交流。

另,补充(如何用JS获取整个HTML页面的内容):

<script>
function GetByTagName(code){
return document.getElementsByTagName(code)[0].innerHTML
}
// 令人震惊的是innerHTML竟然是属性而不是方法
</script>

demo地址:

http://pan.baidu.com/s/1sjoeTbR

最新文章

  1. window下使用Redis Cluster部署Redis集群
  2. 查看sql语句执行的消耗
  3. [POJ2096] Collecting Bugs (概率dp)
  4. 获取客户端IP
  5. .net发邮件【转】
  6. The connection to adb is down, and a severe error has occured.(DDMS中没有真机)
  7. LUA __call
  8. 阿里 drds 分布式数据库分节点查询
  9. hiho(1081),SPFA最短路,(非主流写法)
  10. (转)CentOS 6.5下Redis安装详细步骤
  11. C#中调用WIN32的API
  12. 加密Web.Config配置文件
  13. MYSQL一次性能优化实战经历[转]
  14. Oracle用户权限分配
  15. QuickTime视频解析问题
  16. CCF-201512-1-数位之和
  17. Python进阶之迭代器和生成器
  18. Servlet(三):生命周期、常用方法、常见错误
  19. SpringCloud注解和配置以及pom依赖说明
  20. python笔记11-元组

热门文章

  1. iOS开发之静态库.a的制作教程
  2. Arcengine10下载地址
  3. DHCP服务自动分配IP地址原理
  4. [Doc ID 1590988.1]如何清理E-Business Suite的缓存(Apache/iAS, Cabo, Modplsql, Browser, Jinitiator, Java, Portal, WebADI)?
  5. IE6 BUG margin 两倍
  6. 在 Ubuntu 16.04 中安装谷歌 Chrome 浏览器
  7. 使用WCF和WEBService出现配置的问题
  8. hhgis驱动
  9. 安装.NET Framework组件时,电脑意外重启后再次安装失败
  10. Spread 之自定义对角线cellType源码: DiagonalCellType