十五关
![](https://i-blog.csdnimg.cn/direct/5c19c8d295a542e499b1b255e7790dd4.png)
随便传一个参数,然后右击查看源码发现,这里有一个陌生的东西,就是ng-include。这里就是:
ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号。
因此我们试试包含第一关,构造payload为:?src='/level1.php'
![](https://i-blog.csdnimg.cn/direct/3ce5730350e54640bc6df48fbddb81f9.png)
果然可以加载,接着我们试试,闭合原本的标签,构造payload为:
?src="> <a href=javascript:alert(1)> <"
![](https://i-blog.csdnimg.cn/direct/13c65b174fa8405089da035aba20084f.png)
发现这里估计是用了一个htmlspecialchars($str)进行html的实体转化。
然后就用之前第一关的解吧,我们加载第一关,然后借助第一关的传参来绕过:
构造payload为:?src='./level1.php?name=<img src=1 οnmοuseοver=alert()>'
![](https://i-blog.csdnimg.cn/direct/f333ff9303f44bc28fa96b15d0d7254c.png)
右击查看源代码:
![](https://i-blog.csdnimg.cn/direct/2392ec11779440069e056377b9d640bd.png)
虽然这里也是使用了htmlspecialchars($str)进行html的实体转化,但是但是由于该符号被解析后传递到了level1.php的name参数中,因此我们可以成功突破。
检查源代码:
![](https://i-blog.csdnimg.cn/direct/c39d5c0e3a104c59a7c50ba7665de132.png)
果然就是和我们猜想的一样。
十六关
还是先上传我们的常用关键字试试:
?keyword=" ' sRc DaTa OnFocus OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()>
然后右击查看源代码:
![](https://i-blog.csdnimg.cn/direct/18e02afcd834432cb458b595b9d394ad.png)
发现我们的语句是在center里面,而且进行了小写转换,并把script替换成空格,最后将空格给实体化,这里空格可以用什么替换?试试斜杠
payload为:?keyword=<img/src=1/οnmοuseοver=alert(1)>
![](https://i-blog.csdnimg.cn/direct/31634dd70a5c456991cc2c4fada27d8c.png)
斜杠也被实体化了,只能使用回车试试了,回车的url编码是%0a,我们用这个替换空格:
?keyword=<img%0Asrc=1%0Aοnmοusedοwn=alert(2)>
果然成功了:
![](https://i-blog.csdnimg.cn/direct/a30fb646e2464020b3a384611d319853.png)
![](https://i-blog.csdnimg.cn/direct/190c8e1b3e064257a43818e0ed0af051.png)
查看源码:
17-20关
这里后面的涉及flash插件,浏览器不支持,就没有再看。贴一个大佬的通关记录: