DOM破坏BurpSuite学院(Up升级版[其实就是代码变多了])

首先我们先看一个案例

location.hash是一个锚点获取URL的注释后面的东西

 打断点:

可以看到传值如下:

 循环利用removeAttribute去除掉

但是结果,本改被移除的onerror属性逃逸出来了,把一个正常的属性删掉了??为什么会造成这样的问题

 看看代码分析吧

其实真正的含义:跟指针有点像,删了一个后面一个给前面跑,指针指到后面直接变为空了也就停止了

那很简单刚才的源码传入上面加上多余属性,src和alert输出了

 

案例升级

属性全被拿到空数组里面,在空数组里面去进行循环删除

 但是,两个<svg>就可以????循环删除???

很明显svg删掉了,为什么删了还能看到??? 

 执行顺序???

当我们使用 innerHTML 直接将HTML字符串插入到DOM中时,浏览器会解析这个HTML并创建相应的DOM元素。如果HTML中包含了JavaScript事件处理器(例如svg、 onloadonclick 等),这些处理器在所有属性被删除之前就已经被识别并准备执行了。因此,我们的代码虽然删除了 onload 属性,但是恶意的JavaScript代码已经设置好并准备执行了。

那dom破坏怎么破坏呢??(这里替换掉)

首先先尝试name和id都是不可以的,那我们加个form标签呢??

很明显ok了,这里报错了,说form不是一个可迭代对象

 

为什么会报这个错??说明一个事情,它不能被for循环,很简单再加一个input

这确实破坏了,但是有什么用???我们需要思考form被留下了,form可不可以触发我们的xss漏洞 ,我们的焦点就可以实现

http://127.0.0.1/appcms-master/demo2.html#<form tabindex=1 onfocus="alert(1);" this.removeAttribute('onfocus');" autofocus="true"><input name=attributes><input name=attributes></form>

好了了解了基础知识

开始闯关

 

多了一个过滤框架

 源码,所有的代码都会通过这个框架去进行过滤

白名单

 通过分析代码,我们找到漏洞点

这里的attributes是不是和我们上面举的例子一样

 

那这里的东西能不能替代,如果可以替代,length是空的,控制是undefined,空值的话直接跳出循环不循环了,它就不会走下面了,那我的恶意属性就不会被删除了

好了知道思路了我们去尝试

<form id=x tabindex=0 onfocus=alert(document.cookie)><input id=attributes>

之后我们一直试着tab(出现了)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值