DOM破坏绕过XSSfilter例题

目录

一、什么是DOM破坏

二、例题1

三、多层关系

1.Collection集合方式

 2.标签关系

3.三层标签如何获取

四、例题2

五、例题3

1.代码审计 

2.payload分析


一、什么是DOM破坏

DOM破坏(DOM Clobbering)指的是对网页上的DOM结构进行不当的修改,导致页面行为异常、性能问题、安全风险或其他不良影响的情况。

就是⼀种将 HTML 代码注⼊⻚⾯中以操纵 DOM 并最终更改页面上 JavaScript 行为的技术

这里我们举一些例子就能更好地解释

DOM破坏绕过XSSfilter例题_第1张图片

可以看到打印的结果如下

通过打印标签中的id或者name属性值,我们获取到了整个标签

从中我们也发现了规律,直接打印x,y不管是id还是name都可以打印出来

而通过document来获取x,y只能打印出name属性的标签

window和直接打印的结果是一样的,都可以打印

DOM破坏绕过XSSfilter例题_第2张图片

下面这个例子可以看到cookie开始是空值,然后创建了一个div元素

在div里面添加了标签,然后添加到body里面去

这时候再打印cookie,发现变成了

这个例子成功地让本来为空值的cookie有了值,而且是我们可以控制的

DOM破坏绕过XSSfilter例题_第3张图片

然而得到一个标签对象并不是我们想要的,有些函数的参数并不是一个对象,而是字符串

这就需要函数在调用自己时,自己本身有一个ToString函数能够转换为字符串,然后让函数执行

所以我们需要一个自身拥有ToString函数的标签,而不是继承父类Object的ToString函数

DOM破坏绕过XSSfilter例题_第4张图片

可以看到一个对象调用父类的toString函数就会返回[object object],所以我们需要一个本身有toString函数的标签

通过下面的脚本过滤出了自身拥有toString函数的标签

HTMLAreaElement()和HTMLAnchorElement(),也就是