绕过循环作业

在这里插入图片描述
i=2循环开始,a=9,9被移除了,7跳到9的位置,i=3,a=6,7就没有被删掉,i=1。6,9,7就不能循环了
三次循环结束了 不能边循环边移动
在这里插入图片描述

在这里插入图片描述
for把3跳过了,从2直接到4。
索引,1打印出来,2被删了但是也打印了出来,2没了的时候3往前移了一个位置,循环直接跳到4了,3就没有删掉
在这里插入图片描述把xxx titlel删掉了,第二个往前走了
在这里插入图片描述
第一个a删掉了,第二个就往前走了

querySelectorAll() 方法返回文档中匹配指定 CSS 选择器的所有元素,返回 NodeList 对象。NodeList 对象表示节点的集合。可以通过索引访问,索引值从 0 开始。
在这里插入图片描述
querySelectorAll() 方法返回NodeList 对象是表示节点的集合,将遍历的第一个属性删除后,则第二个属性的取代了第一个属性的索引位置,而第二个索引位置上是第三个属性。
绕过原因:<img x=aaa src=1 xx=aaa οnerrοr=alert(1)>
attributes 属性返回指定节点属性的集合,所以进入循环遍历的是标签的4个属性[x=aaa,src=1,xx=aaa,οnerrοr=alert(1)]

第一次遍历:删除索引位置为0的第一个元素(x=aaa),第二个元素(src=1)成为了第一个。得到集合[src=1,xx=aaa,οnerrοr=alert(1)]
第二次遍历:删除索引位置为1的第二个元素,而此时第二个元素是(xx=aaa)。得到集合[src=1,οnerrοr=alert(1)]
第三次遍历(无法进行):因为经过前2次遍历删除,集合只有2个元素,而第三次遍历要删除索引位置为2的第三个元素,但集合不满足条件,故无法遍历,退出循环。

经过循环遍历删除后最终标签变成;<img src=1 οnerrοr=alert(1)> src != 1 触发onerror事件,成过执行alert(1),绕过成功。

在这里插入图片描述
截取url#后面的内容
div标签使用innerhtml将截取的内容放入div标签中querySelectorAll()获取div下的子元素,此时el就是form,获取form的属性,先放进一个空数组再进行一个遍历删除操作。
dom破坏做法
不要让它进循环
http://127.0.0.1/demo7.html#<svg<svg/οnlοad=alert(1)
当只有一个 标签时;http://127.0.0.1/demo7.html#<svg/οnlοad=alert(1)>
代码会按着顺序一直执行下去当进入循环会删除属性,所以无法弹窗;
最内层的svg先触发,然后再到下一层,而且是在DOM树构建完成以前就触发了相关事件;最外层的svg则得等到DOM树构建完成才能触发。
套嵌的svg之所以成功,是因为当页面为root.innerHtml赋值的时候浏览器进入DOM树构建过程;在这个过程中会触发非最外层svg标签的load事件,最终成功执行代码。所以,sanitizer执行的时间点在这之后,无法影响我们的payload。

svg方法
进循环别删除有用数据
<from tabindex=1οnfοcus=“alert(1);this.removeAttribute(‘onfocus’);” autofocus=“true”>
tabindex:全局属性,指示其元素是否可以聚焦(获得焦点),以及它是否/在何处参与顺序键盘导航(改变其执行顺序)。
onfocus 事件在对象获得焦点时发生,通常用于 , , 和。
autofocus 属性规定当页面加载时 input 元素应该自动获得焦点,如果使用该属性,则 input 元素会获得焦点。
因为标签没有onfocus属性,通过tabindex=1,将焦点聚到标签中
通过下断电我们可以看到 el:form,在el.attributes获取到2个的属性,放入attr这个空数组,最后在删除属性。注意我们进入循环删除的是标签的属性,而我的绕过触发的是标签的属性
未进循环;
<from tabindex=1 οnfοcus=“alert(1);this.removeAttribute(‘onfocus’);” autofocus=“true”>
进入循环后;
<from tabindex=1 οnfοcus=“alert(1);this.removeAttribute(‘onfocus’);” autofocus=“true”>
但<from tabindex=1 οnfοcus=“alert(1);this.removeAttribute(‘onfocus’);” autofocus=“true”>完整所以成功触发绕过;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值