第一关
随便输入数据,点击search,按F12查看元素,发现显示在b标签内
所以先闭合b标签,输入444"</b><script>alert(document.domain)</script><b>
就OK了。
第二关
随便输入数据发现不显示,按F12审查元素,找到输入框input标签,发现框框里输入的数据会显示在input标签里的value里
所以就可以构造语句"><script>alert(document.domain)</script>"<
前后闭合标签就OK了。
第三关
这一关发现,在输入框里输入的代码不管怎么闭合,都会被当作字符串输出出来,这样只能把关注点放在后边的下拉选项中,因为它也随着出现在输入框下面
因为不是输入框,我们没法随意输入,所以可以采用抓包。
修改参数p2,OK了。
第四关
随便输入数字,点击search,然后抓包截断,发现
有一个隐藏参数p3,这时我们可以回到页面,点击F12,进行代码审查,搜索hidden,找到form表单里的hidden
可以看到hackme是在value属性里,所以可以先闭合标签然后写入XSS代码。
在抓包软件修改p3为hackme"><script>alert(document.domain)</script>
就OK了。
第五关
这一关只是把输入框的可输入长度个限制了,只需F12找到输入框input,更改其中的maxlength属性,同时也可以看到value里与相应的数据,所以参考第二关即可。
第六关
这一关,按照往常的思路,输数据,审查元素,闭合标签并加入代码,发现并不行的通,尖括号被转义了。
这样的话,只能另辟蹊径了。既然不能输尖括号,那干脆就不闭合标签,再input属性里添加一个事件。
关于事件有很多种,JavaScript事件。
111" onmouseover="alert(document.domain)"
第七关
这一关直接输入上一关的代码,发现很多地方多了引号,onmouseover那里全部都称了字符串,怪不得执行不了
所以反过来,把该去的引号去了即可。111 onmouseover=alert(document.domain)
第八关
这一关要用到JavaScript伪协议,输入的数据会直接显示在a标签里的href里,而javascript:这个特殊的协议类型声明了URL的主体是任意的JavaScript代码,它由JavaScript的解释器运行。
转自JavaScript中伪协议
所以可以直接输入javascript:alert(document.domain)
第九关
这一关进行了UTF-7编码,但其实UTF-7在一些浏览器里直接就进行了去除,所以这一关不做演示。
可以在Hint内部添加一个事件,来通关
同理,前边所有关卡也都可以这样通关。
第十关
这一关进行了domian的过滤,可以采用双写绕过。
"><script>alert(document.dodomainmain)</script>"<
编码绕过
"><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9kb21haW5tYWluKQ=='))</script>
eval()函数用于计算JavaScript字符串,并作为脚本代码来执行。
atob()是将base64变为字符串。
注意:编码这个方法在这一关行不通。
第十一关
这一关发现,不仅很多事件的关键字被过滤,onclick被转义称onxxxx,而且script关键字也被转义,相应的JavaScript伪协议中也会被转义,但如果把JavaScript伪协议稍做修改就能成功。
空格绕过"><a href="javascr ipt:document.domain">xss</a>
第十二关
这一关发现尖括号以及引号都被过滤,这样没办法闭合了。这次要用到IE浏览器的特性,就是两个反引号Tab键上边的建可以闭合一个引号,所以可以直接构造语句`` οnmοuseοver=“alert(document.domain)”
第十三关
后续还会再更新