前言
一些分享还是到我的博客看吧。。。
最近对xss起了一点兴趣,正好读了几篇文章(但还远远不够,文章在文末),想在网上找个靶场练练。这点老外就比国人做得好了,网上总能找到一些有意思免费的项目对所有人开放,而这种往往都是老外搞的,不管人家绝得好玩,或者其他原因,搞技术总要有点geek精神。扯多了。。。
网站链接
共六关,只有解出当前关卡,才能解锁下一个关卡。
walkthrough
-
xss-game-level1
无过滤,直接输入payload即可。
-
xss-game-level2
这题类似一个留言板,首先看了一下源代码,直接输入payload无法执行,一开始以为是包裹在blockquote标签导致,后来本地测试包裹在blockquote标签的脚本是可以执行的,因此这里可能经过了处理。
看一下源码
这里将我们的输入放进innerHTML属性,而script标签内的js在innerHTML是无法执行的(当然想要执行也有方法),显然svg的onload事件也无法在innerHTML属性内执行。但还有很多其他的标签的on系列能执行js。如
和
前者可运用于标准html,而后者可运用于html5.并且这些标签无需点击,具体可以参考文末链接。
所以此处直接使用
img标签即可。 -
xss-game-level3
这个在源码直接看到将输入的num拼接到
img标签内因此直接闭合
-
xss-game-level4
当我们触发延时时能看到图片的load属性
看一下startTimer方法
确实没啥东西。second注入也没有意义。
Hint说<foo bar='z'> is the same as <foo bar='z>'即我们的输入会先被html实体解码。最后一个Hint确实给了启发,在单引号闭合后consloe控制台报错,明显可以注入其他函数,包括alert所以直接注入
-
xss-game-level5
这个题当我看到链接的时候就觉得可能有js伪协议来xss,果然。前端的singup页面直接渲染后端传来的
next,而
next我们在该页面可控因此直接传入js伪协议即可执行js点完Go之后我们看到Next链接为我们输入的伪协议
点击Next触发xss
-
xss-game-level6
此处引入外部js
而且我们可控尝试跨域引入js,但http关键词被过滤,但只过滤了小写,可大写绕过(就这么简单,当时竟然没想到,还在想有没有其他协议可以引入js)。
总结
xss博大精深,绝不止这几个小游戏能够概括的完的,权当娱乐,真要提升还必须要在实战中随机应变。
文章
- https://netsec.expert/2020/02/01/xss-in-2020.html
- https://xz.aliyun.com/t/7406
- https://xz.aliyun.com/t/7372
- http://ghostlulz.com/content-security-policy-csp-bypasses/
参考
http://offsec-sureshatt.blogspot.com/2017/04/google-xss-game-solving-level-1.html