这篇文章简单的介绍下xssgame的通关方法,从名字可以看出,xssgame就是针对xss攻击进行专门的漏洞复现,由易到难。

 

链接:https://pan.baidu.com/s/1F9I7iBdu7MPLLvegM5kAQg

 

提取码:469c

 

这是xssgame的安装包,将它放到phpstudy/WWW文件夹下访问即可

 

第一关

 

这一关没有任何过滤,直接构造

 

<script>alert(123456)</script>

 

 

第二关

 

先输入上一关的<script>alert(1)</script>会被服务器做编码转换<>被转换为&lth和&gt

 

 

从源码中可以看出,搜索的内容依然被做了 html 编码,但是输入的查询内容,被带入到了 input 的标签,通过">进行闭合,构造payload

 

"><script>alert(1)</script>

 

 

查看源代码,更好理解了这样做的原因

 

 

第三关

 

尝试输入<script>alert(123456)</script>,没有弹窗,然后查看源文件,可以看出Payload 两处输出位置,并且发现<>都被编码代替了。

 

 

 发现value这里是单引号,所以可以尝试闭合标签,通过事件触发弹窗

'onmouseover='alert(1)

 

第四关输入<script>alert(1)</script>查看页面源码发现上面的<>被替代,下面的<>被删掉

 

所以这里我们使用事件触发窗口,构造payload

 

"onmouseover="alert(1)

 

 

第五关

 

输入<script>alert(1)</script>查看页面源码,上面做了编码替代,下面的script被分开

 

 

尝试"onmouseover="alert(1),发现on被分开

 

 

这里尝试利用<a>标签,构造payload 如下

 

"><a href="javascript:alert('a')">1</a >//

 

点击链接 1,触发弹窗

 

 

查看网页源代码,它是将input标签进行闭合,又增加了一个a标签构造了一个链接,//把后面的注释掉

 

 

第六关尝试输入payload,并观察输出位置,仍然是两处输出

 

<script>alert(1)</script>
"onmouseover="alert(1)
"><a href="javascript:alert('a')">1</a>//
"><img src="javascript:alert('a')">1</img>//

 

 

发现<sccript> ,on,herf,src都被分隔开了,换一种思路,可以将关键词变为大写

 

"ONmouseover="alert(1)

 

 

 

 

 第七关

 

尝试输入,并观察输出位置

 

<script>alert(1)</script>

 

发现script被过滤

 

 

接下来尝试上一关的语句们也不行,大写也不行,可以试试双写,注意语句的闭合

 

"><scrscriptipt>alert(1)</scrscriptipt>

 

 

第八关

 

老样子,尝试输入,并观察输出位置

 

<script>alert(1)</script>

 

发现有两处输出,一处使input标签,一处是a标签

 

 

此处构造 payload,需要考虑在 a 标签内,并绕过敏感字符。因为关键字符被做了替换,包括 script\herf\src\on\等,大小写也不行。
这里尝试构造特殊的字符处理,就是在关键词中添加特殊的制表符,例如%OA,%09,例如构造 payload
Javascri%0Apt:alert(1)
javascri%0Apt:Aalert(1)
特别注意:payload 在搜索框中输入时,会被浏览器进行编码,从而导致不能执行,payload 需要在 url 直接输入。

 

 

第九关

 

第九关与第 八 关类似,都是写入链接,并点击友情链接。本关会强制检查如果输入的参数不含 http://,就认为是非法链接,无法插入到链接中,因此构造参数必须包含 http://,同时敏感字符被做了替代,需要做变换,采用与第 8 关类似的思路,构造如下 payload:与第 8 关一样,payload 需要在 url 中构造,防止浏览器的编码。

 

能从结果中看到已经被写入到了 a 标签内,但是没法执行

 因此需要变换格式为

javascript:alert(1)//http://
成功执行弹窗

第十关

从页面看,没发现输入参数的地方,只能在 URL 输入参数,从输出位置看,被编码代替了。但是从源码中发现,存在 3 个隐藏表单,因此可以在访问页面时,尝试修改隐藏表单,看看返回结果。 type="hidden"含义是隐藏类型
修改表单之后,输入任意字符,即可出发弹窗。

 

 

 第十一关方法和上面的第十关一样

 

第十二关

 

查看网页源代码

 

 

由此可以判断出 http 请求的 u-agent 字段内容将输出到 input 的 value 中。因此此处可以通过 u-agent 字段传递 paylaod,构造如下 payload

 

刷新页面,通过 burp 抓包,更改 u-agent 字段

 

 

 

输入任意字符,弹窗

 

 

第十三关

 

查看网页源代码

 

 

从返回结果中,直接查看源文件,看到 t_cook 隐藏字段,由此判断此处应该是请求中的cookie 字段被输出到了这个隐藏字段。
因此构造的 payload 的输出位置应该在 cookie 字段。刷新页面,用 burp 抓包,更改 cookie 字段

 

 输入任意字符,弹窗

 

第十六关

 

按照以前的方法测试,发现都不行。本关过略了 script,空格,以及/,输出位置为 center 中间,因此 payload 构造需要避免这些出现空格可以用%0d,%0a 代替

 

<img%0Dsrc="1"%0Donerror=alert(1)>

 

<img%0asrc=1%0aonerror=alert(1)>

 

<iframe%0asrc=x%0donmouseover=alert`1`></iframe>

 

 

第十七关

 

在url中添加参数,查看页面源代码,查看输出位置

 

 

构造 payload,直接构造 onmouseover=alert(1),附加在 b 参数后面,鼠标滑过,弹窗

 

 

第十八关

 

尝试更改参数,观察输出位置跟 17 关没有区别,也是同样位置。构造同样的 payload,onmouseover=alert(1),附加在 b 参数后面,鼠标滑过,可以弹窗

 

 

 

 posted on 2023-06-26 21:05  骑着七彩祥云的少年  阅读(324)  评论(0编辑  收藏  举报