这篇文章简单的介绍下xssgame的通关方法,从名字可以看出,xssgame就是针对xss攻击进行专门的漏洞复现,由易到难。
链接:https://pan.baidu.com/s/1F9I7iBdu7MPLLvegM5kAQg
提取码:469c
这是xssgame的安装包,将它放到phpstudy/WWW文件夹下访问即可
第一关
这一关没有任何过滤,直接构造
<script>alert(123456)</script>
第二关
先输入上一关的<script>alert(1)</script>会被服务器做编码转换<>被转换为<h和>
从源码中可以看出,搜索的内容依然被做了 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,直接构造 onm ouseover=alert(1),附加在 b 参数后面,鼠标滑过,弹窗
第十八关
尝试更改参数,观察输出位置跟 17 关没有区别,也是同样位置。构造同样的 payload,onmouseover=alert(1),附加在 b 参数后面,鼠标滑过,可以弹窗
标签:xss,xssgame,输出,弹窗,构造,alert,复现,payload,输入 From: https://www.cnblogs.com/heiwa-0924/p/17506720.html