leve1(无过滤)
第一关没难度
payload:?name=<script>alert(1)</script>
leve2(闭合script标签绕过)
测试<script>alert(1)</script>失败,看下前端源码:

我们需要主动闭合,使<script>标签逃逸出来
payload:?keyword='"><script>alert(1)</script>

或者下面的payload:"><script>alert(1)</script>
leve3(单引号onclick事件绕过)
尝试<script>alert(1)</script>失败,继续看源码:

左尖括号和右尖括号都被转义了,所以我们用不了标签,接下来只能尝试事件弹窗,先看下' " < >有哪些被转义

这里只有单引号没有被转义,那就用onclick来弹窗
payload:#' onclick='alert(document.cookie)
这里的井号可有可无的,onclick后面的单引号与后面原先的单引号闭合,然后我们点击输入框,即可成功

leve4(双引号onclick事件绕过)
这里同样方法测试,发现单双引号都没过滤,还发现value的值是被双引号包含(与上一题的不同点),直接把payload的单引号换成双引号即可
payload:#" onclick="alert(document.cookie)

然后点击输入框的#即可
leve5(a标签js伪协议绕过)
发现script标签里的r和i之间被加上了下划线,那么script肯定用不了了,' " < >都没被过滤,然后发现onclick事件也用不了


那这里只能用a标签了
payload:#"><a href=javascript:alert(1)>

level6(大小写绕过)
测试一下href和ri和on,确认下a标签和script标签和onclick事件能不能用

只能尝试script大小写了(双写肯定不行的)
payload:"><scRipt>alert(1)</scRipt>

除了script大小写,还可以href大小写,和on大小写都能绕
level7(双写绕过)
测试<script>alert(1)</script>,发现script没了,只剩下尖括号了,那这里应该是过滤了script关键字,那就可以用双写绕过了

paylaod:"><scscriptript>alert(1)</scscriptript>

这里用其他的双写也能绕过,如a标签的href和事件的onclick中的on双写都可以
level8(href之unicode编码绕过)
测试<script>alert(1)</script>

可以看到输入的内容赋值给href,而href可以执行js伪协议即href=javascript:alert(1),但是这里被过滤了,大小写也绕不了,但是href在执行过程中回对unicode编码,如果我们传输的是javascript:alert(1)的unicode编码,那么执行过程就会解码,就成功绕过了,在线unicode编码

paylaod:javascript:alert()

然后点击友情链接就能绕过
level9(href之unicode编码绕过)
查看源码发现我(href之unicode编码绕过)们的输入中需要包含http://,我们可以这样构造:

javascript:alert()//http://
我们最后使用一个双斜杠给它隔断

然后点击友情链接就能绕过
后面的有点难,有时间再搞吧

1182

被折叠的 条评论
为什么被折叠?



