最近研究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

XSS传染基础——JavaScript中的opener、iframe的更多相关文章

  1. 基础-JavaScript中的事件

    在html中引入外部js方式: <html> <head> <script src="xxx.js"></script> </ ...

  2. (译文)JavaScript基础——JavaScript中的深拷贝

    在JavaScript中如何拷贝一个对象? 通过引用调用 function mutate(obj) { obj.a = true; } const obj = {a: false}; mutate(o ...

  3. JavaScript基础Javascript中的循环(003)

    1.普通循环JavaScript中一般的循环写法是这样的: // sub-optimal loop for (var i = 0; i < myarray.length; i++) { // d ...

  4. Javascript中window.opener的一点小总结

    以前一直认为window.opener只有在window.open方法打开下的窗口才可以访问,没想到即使是a链接打开的页面的照样可以访问.window.opener指向父窗口,也就是来源窗口.可以利用 ...

  5. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  6. javascript中关于日期和时间的基础知识

    × 目录 [1]标准时间 [2]字符串 [3]闰年[4]月日[5]星期[6]时分秒 前面的话 在介绍Date对象之前,首先要先了解关于日期和时间的一些知识.比如,闰年.UTC等等.深入了解这些,有助于 ...

  7. js基础知识温习:Javascript中如何模拟私有方法

    本文涉及的主题虽然很基础,在很多人眼里属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题.这里会涉及到对象属性的封装.原型.构造函数.闭包以及立即执行表达式等知识. 公有方法 公有方法 ...

  8. JavaScript中登录名的正则表达式及解析(0基础)

    简言 在JavaScript中,经常会用到正则表达式来进行模式匹配.例如,登录名验证,密码强度验证,字符串查找或替换等操作.现在就开始吧,零基础写出你的第一个正则表达式! 在做用户注册时,都会用到登录 ...

  9. JavaScript中的基础测试题

                                                                                                    Java ...

随机推荐

  1. Java基础知识强化之网络编程笔记10:TCP之客户端读取文本文件服务器控制台输出

    1. TCP之客户端读取文本文件服务器控制台输出 (1)客户端:(发送数据到服务端) package cn.itcast_10; import java.io.BufferedReader; impo ...

  2. ASP.NET 不同页面之间传值

    不同页面之间如何传值?我们假设A和B两个页面,A是传递,B是接收. 下面学习4种方式: 通过URL链接地址传递 POST方式传递 Session方式传递 Application方式传递 1. 通过UR ...

  3. linux中shell编程

    shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ...

  4. Web安全测试周末公开班计划5月24、25日开课,欢迎报名参加!

    Web安全测试周末公开班计划5月24.25日开课,欢迎报名参加! 课程大纲参考: http://gdtesting.com/product.php?id=107 报名咨询: 黎小姐 QQ:241448 ...

  5. (转)(contant的一些用法)

    主要就是增加约束的 以下几种约束 .并 一一列举: 1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码  要对 ...

  6. 【转】Oracle - 数据库的实例、表空间、用户、表之间关系

    [转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机 ...

  7. 20160515-hibernate--事务

    事务 JDBCTransaction 单个数据库(一个SesisonFactory对应一个数据库),由JDBC实现. Session session = null; Transaction tx =n ...

  8. plupload+struts2实现文件上传下载

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" ...

  9. Json字符与Json对象的相互转换

    Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJ ...

  10. C# this关键字详解

    this关键字主要有一下几个用途:1,this 用来引用当前类的实例,和扩展方法的第一个参数的修饰符 }2,限定被相似的名称隐藏的成员,例如: public Employee(string name, ...