0x00
这关没有任何限制
直接输入:
代码
<script>alert(1)</script>
0x01
分析代码得知,将我们输入的数据包裹在<textarea>标签中返回,因为<textarea>为RCDATA元素,在此标签中,只能返回</textarea>标签无法创建其他标签,所以这一关我们需要将<textarea>标签闭合输入其他标签
代码
'</textarea><script>alert(1)</script>
0x02
分析代码可以得知,将输入数据的返回值放在input标签中的value值里
闭合input标签,重新写入恶意标签
代码
"><script>alert(1)</script>
0x03
分析代码发现本关通过使用正则表达式来过滤了我们()的,()将替换为空
使用反引号代替括号
代码
<script>alert`1`</script>
0x04
分析代码发现,在上一关的基础上将我们的反引号也过滤掉了选择进行编码的方法绕过,需要注意html解析规范
代码
<IMG SRC=""onerror=alert(1)>
0x05
分析代码发现将我们输入的数据放在html注释符中,并使用替换函数将注释符-->替换为一个笑脸符号
正常的html注释格式为<!--aaa-->但经过测试可以发现,在html中使用<!--aaa--!>的方法也达到注释的效果。
代码
--!><script>alert(1)</script><!--
0x06
分析代码可以发现本关将输入数据放在input标签中,并将auto和on字符进行了一个替换添加。目的防止我们在input标签中使用事件弹窗,也不让使用>对input标签进行闭合
但因为html的特性,可以不同行执行命令,我们可以在auto、on关键字后换行,再书写=alert(1)函数。代码
type="image" src="" onerror
=alert(1)
0x07
分析代码发现本关将<>和尖括号中的字符全部过滤,防止我们书写新的标签造成恶意弹窗。
这里就需要利用一个html的特性了,html在解析中有一种纠错机制,img标签不写后面的“>”仍然是可以正常执行的。
代码
<img src="1" onerror="alert(1)"
0x08
分析代码发现,本关将输入数据放入在一个<style>标签中,并过滤了</style>标签防止我们进行闭合操作。思路是使用换行操作,因为他只识别某一行特定字符进行过滤,但html可以执行不同行的命令,所以使用换行操作进行闭合style标签绕过过滤。
代码
</style
>
<script>alert(1)</script>
0x09
分析代码可以发现,如果不输入domainre变量中的字符串则会直接返回语句lnvalid URL,输入正确语句后放入script标签中。
所以本关需要考虑如何把变量中的url闭合
将第一个script闭合后,由于有return的返回值">,所以还需要使用注释符注释就可以绕过了。
代码
https://www.segmentfault.com"></script><script>alert(1)//