当前位置:网站首页>一个循环,两个循环问题的思考及复现
一个循环,两个循环问题的思考及复现
2022-08-03 01:03:00 【熬夜且瞌睡】
一个循环

在url中输入img标签
<img src=1 οnerrοr=alert(1)>

执行之后,我们看到src属性消失了,只留下来onerror属性,

分析原因,我们断点执行,一步一步来看。在第一个for里面,el传递的是img标签,而后面的“*” 代表标签内的所有元素,attr代表img标签内的属性,而下图的0和1则代表的索引下标,而后面的el.removeAttribute(attr.name);即删除了img的第一个属性,就是src,为什么onerror没有被删除掉,可以理解为这个删除是按照空间位置来删的。索引为[0]在第一个空间位置,索引为[1]在第二个空间位置,当把第一个空间位置清理出来,删除就会来到第二个空间位置,但因为第一个空间位置为空,原空间二自动填充,及此时所有空间都往前移了一位,则此时若删除空间二的内容,实际删除的是空间三的内容。



如图,按程序的意思应该是从大到小排序,但实际只输出9,7,6,这就是因为当删除9,7,6时,在其后面的元素都会前移,实际一共循环三次,第一次以2为起始元素,第二次是3,第三次是1,三次循环过后,停止循环
当我们输入以下标签,添加一个a=1111
![]()

则只保留了 src属性
为了避免删除标签,我们可以将其设置为,可以进入循环,但让其删除的是无用的属性,我们可以利用之前学的id与name来实现
先进行演示,查看是否可行
<body>
<form id="x"action="">
<img name="attributes">
</form>
</body>
<script>
console.log(window.x.attributes)
</script>

可以看到img标签完整的出现了,这种是利用的删除无用标签,你想删除就删除,我满足你的规则,我在其它地方触发就可以了。但因为要满足可迭代对象的条件,因此<img>标签要写两个,
同时我们要在form里面进行触发,可以加一个自动聚焦的属性:tabindex
最后修改为
<form tabindex=1 onfoucus=“alert(1)” autofocus><input name=attributes><input name=attributes>
但因为时自动聚焦,弹窗会一直出现,我们可以让它执行一次后自动删除
<form tabindex=1 onfoucus="alert(1);this.remove.Attribute('onfocus')" autofocus><input name=attributes><input name=attributes>

另一种不进循环的方式:
使用两个svg标签
原因:
循环执行前就执行恶意属性,若使用一个则在循环结束时也并不会出现弹窗
<svg><svg/οnlοad=alert(1)>

边栏推荐
- PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)刷入EMMC
- ssh(sshd)安全配置
- PAT甲级 1051 Pop Sequence
- Qt在选择MSVC 编译器的时候,无法识别出M_PI的问题处理
- npm运行项目dependencies were not found: core-js/modules/es6.array.fill
- pytest:如何调用 pytest
- 2022年8月2日——使用idea搭建servlet+jsp项目
- The Multiversity 的 “非常重要的生命体” NFT 推出
- Greenplum database failure analysis, can not listen to the port
- php一维数组合并
猜你喜欢

科捷智能冲刺科创板:年营收12.8亿 顺丰与日日顺是股东

apache-activemq-5.14.1

vue3的keepAlive缓存组件

开源聚力,共创未来 | 麒麟信安祝贺openKylin首个体验版正式发布!

【图像分类】2022-MPViT CVPR

iNFTnews | 元宇宙的潜力:一股推动社会进步的力量

PAT甲级 1051 Pop Sequence

2022年8月2日——使用idea搭建servlet+jsp项目

Greenplum database failure analysis, can not listen to the port

吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第二节:神经网络基础(上)
随机推荐
中科磁业IPO过会:年营收5.5亿 吴中平家族持股85%
2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,
不想当Window的Dialog不是一个好Modal,弹窗翻身记...
SAP ABAP Gateway Client 里 OData 测试的 PUT, PATCH, MERGE 请求有什么区别
爆款视频怎么做?这里或许有答案
Brute force recursion to dynamic programming 07 (516. Longest palindrome subsequence)
8 个常用的 Wireshark 使用技巧,一看就会
PAT甲级 1051 Pop Sequence
JSP第一篇 -----JSP九大内置对象(隐式对象)和四大域对象
全栈----跨域
担心的事情
【飞控开发高级教程1】疯壳·开源编队无人机-飞控整机代码走读、编译与烧写
粘包与拆包
【7.31】代码源 - 【矩阵操作】【宝箱】【New Stone Game】【等差数列】
2022 开放原子全球开源峰会 | 麒麟信安携手openEuler助力开源产业繁荣发展
7-Redis工具类
v-if、v-else、v-elseif v-show v-for
OpenWRT设置ipv6网络
GoLang 使用 goroutine 停止的几种办法
微信小程序--》条件与列表渲染以及WXSS模板样式