当前位置:网站首页>循环绕过问题
循环绕过问题
2022-08-04 01:08:00 【莫尼热】
循环绕过问题
一,一个循环绕过
首先下图中的js一次循环删除语句将我们插入的元素的属性进行了删除,那么我们的目的就是通过事件属性将下面的循环绕过,换个思路就是让它不要remove掉有用的属性,通过两种方式来执行我们的恶意属性完成弹窗,两种方式分别是:
(1)进循环不删除有用的属性
(2)不进循环,在进循环前就执行了恶意属性
要想实现让它删除无用的属性就要搞清楚它的删除过程,下面将演示一下这个删除中存在的问题(它删除了第一个获取的属性src但是为什么却没有删除后面的onerror属性呢?)以及如何通过这个问题去实现绕过然后执行事件属性弹窗的效果
通过这个例子我们可以发现结果为:6,4,3
该循环过程为:
首先for循环从2开始循环整个数组,此时的max为6并将其删除,删除后3会自动补上6的空位,此时循环的指针会从4的位置开始遍历,此时的max为4,删除4后,后面的数都会自动补上去,因为此时for循环会从第三个位置开始,就不会从1开始而是从3开始循环,此时的max为3,并将其删除,因为后面没有值了,所以到此结束。
1.进循环不删除有用的属性
理解了循环删除的缺点后我们利用它来让恶意属性绕过删除,就可以达到我们的目的
img绕过

由此可见我们的代码成功绕过,页面没有删除恶意代码
details绕过
这里可以用details绕过是因为页面只删除了open属性
2.不进循环,在进循环前就执行了恶意属性
除了在标签内可以利用一次循环删除的缺点逃逸外还有这种利用svg标签来进行恶意弹窗效果
二,双循环绕过
这里的2次循环删除与一次不同之处在于通过第二次循环将属性都放入了一个新的数组进行删除,避免了恶意属性的逃逸,那么我们的目的就是通过两种方式来执行我们的恶意属性完成弹窗,两种方式分别是:
(1)进循环不删除有用的属性
(2)不进循环

这里可以看出之前的方式完全不行了,这里因为只要放入元素,它的所有属性都会被删除,所以我们就需要使用DOM破坏的方式使恶意属性进入循环中执行,也可以通过不进循环中执行,在循环开始前执行
1.进循环不删除有用的属性



2.不进循环
这里使用两个svg标签的原因是,它会在循环执行前就执行恶意属性,而使用一个svg时它直到循环执行后还都不会执行

直接执行了
一个svg不行,因为一个svg会进入循环被删除了属性,无法弹窗。前面加一个svg的原因是当没有svg闭合标签时就会触发下面的判断,如果你的svg不是最外侧的就会创建一个事件去执行它,所以这里要使后面的svg不是最外侧才会被执行
只要你的svg不是最外侧的它就会创建一个事件load去执行你的onload事件
边栏推荐
猜你喜欢

Deng Qinglin, Alibaba Cloud Technical Expert: Best Practices for Disaster Recovery across Availability Zones and Multiple Lives in Different Locations on the Cloud

typescript51-泛型的基本使用

哎,又跟HR在小群吵了一架!

阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践

电子制造企业部署WMS仓储管理系统的好处是什么

Array_Sliding window | leecode brushing notes
![Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.](/img/10/87c0bedd49b5dce6fbcd28ac361145.png)
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.

中原银行实时风控体系建设实践

js中常用的几种遍历处理数据的方法梳理

【store商城项目01】环境准备以及测试
随机推荐
js函数防抖和函数节流及其使用场景
C 学生管理系统_添加学生
nodejs+express实现数据库mysql的访问,并展示数据到页面上
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中
boot issue
阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践
数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
【虚拟化生态平台】虚拟化平台搭建
Tanabata festival coming, VR panoramic look god assists for you
如何用C语言代码实现商品管理系统开发
Sticker Spelling - Memory Search / Shape Pressure DP
The 600MHz band is here, will it be the new golden band?
2022 China Computing Power Conference released the excellent results of "Innovation Pioneer"
typescript53-泛型约束
BGP实验(含MPLS)
GNSS【0】- 专题
typescript51 - basic use of generics
【OpenCV】-重映射
nodejs installation and environment configuration