当前位置:网站首页>一个循环,两个循环问题的思考及复现
一个循环,两个循环问题的思考及复现
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)>
边栏推荐
- Violence recursion to dynamic programming 08 (pony go chess)
- visual studio 2012 为啥这么优秀
- 不想当Window的Dialog不是一个好Modal,弹窗翻身记...
- ”QSqlDatabasePrivate::removeDatabase: connection ‘test-connect‘ is still in use“数据库多次打开报错
- 236. The binary tree in recent common ancestor
- The Sandbox 市场平台将上线 Isla Obscura 第五期 NFT 作品集
- List转Map的几种方式
- 1686. 石子游戏 VI
- 通力传动递交注册:年营收4.7亿 实控人项献忠家族色彩浓厚
- MySQL删库不跑路
猜你喜欢
鲲鹏devkit开发套件
什么情况下DigiCert证书会引起发生安全警报?
【社媒营销】Facebook速推帖子如何运作?值得吗?
中科磁业IPO过会:年营收5.5亿 吴中平家族持股85%
6-接口跨域处理
[NCTF2019]SQLi-1||SQL注入
8 个常用的 Wireshark 使用技巧,一看就会
.NET in-depth analysis of the LINQ framework (four: IQueryable, IQueryProvider interface details)
软件测试从业多年,自认为技术不错,裸辞:一晃 ,失业3个月了~
吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第二节:神经网络基础(上)
随机推荐
8 个常用的 Wireshark 使用技巧,一看就会
mysql容器数据卷持久化
开源聚力,共创未来 | 麒麟信安祝贺openKylin首个体验版正式发布!
如何让优炫数据库开机自启
Go高性能之方法接收器 - 指针vs值
如何正确地配置入口文件?
暴力递归到动态规划 07(516. 最长回文子序列)
软件测试从业多年,自认为技术不错,裸辞:一晃 ,失业3个月了~
[NCTF2019]SQLi-1||SQL注入
Qt在选择MSVC 编译器的时候,无法识别出M_PI的问题处理
7.31
如何备考PMP才能一次通过?
apache-activemq-5.14.1
全栈---JSONP
为什么要使用 playwright 做浏览器自动化测试?
【TypeScript笔记】01 - TS初体验 && TS常用类型
有趣简单的M2处理器性能实验:Swift与C代码执行速度的比较
10-security登录
List转Map的几种方式
v-if条件判断及v-show