FireShell CTF 2020 WP

F

老外的比赛,老菜狗上去看了两眼没啥思路就溜了,照着国外师傅们的 wp 复现一下。

CaaS

在线c语言编译器,会把输入的 C 代码编译成可执行文件,再以下载文件的方式返回。一开始以为是用任意文件下载收集信息,但是由于比赛的所有题目都是 https 无法用 burp 抓包,因此没有具体定位到下载的 url。

国外师傅的做法是利用 C 语言的 #include 直接将 flag 当做头文件包含,由于包含 flag 无法通过编译会报错,因此会直接在前端显示出来。这个操作确实是没想到,学习了。

URL to PDF

看了师傅们的 wp,这个题目主要考点在这里。题目是个提交框,可以提交一个 url 服务器会访问并转成 pdf 以供下载。用自己的 vps 看一下头信息:

是很不常见的 WeasyPrint,根据上面的考点,这个爬虫虽然不会渲染 js,但是却可以解析 <link attachment=xxx>,因此我们可以在 vps 上构造 payload: <link rel=”attachment” href=”file:///flag”>,下载下来的 pdf 虽说没有显示,但是放到 pdfdetach 中看确实能看到 attachment,提取出即可。

Screenshoter

这题巨坑!!

和 pdf 差不多,只不过这次换成给网页截图,同样先获取爬虫的头信息:

是 PhantomJs,由于刚刚给 XCTF 出的 xss 题目的 bot 就是用 PhantomJs 写的,因此知道 PhantomJs 可以执行 JS 脚本,直接读取一下文件:

<body>
    <script>
        var xhr = new XMLHttpRequest();
        xhr.onload = function () {
        document.body.innerText = xhr.responseText;
        };
        xhr.open('GET', 'file:///flag');
        xhr.send();
    </script>
</body>

这就是题目的坑点了,访问之发现图片是全黑的,这里琢磨了半天也没明白到底执行成功了没有,后来看了日本师傅的 wp(文末有链接),发现师傅机智得用 style 把背景调成了白色 hhhhhhh。很欢乐的一道题,还好我当时没做不然肯定心态爆炸 233333。

xtrader

打开之后给你放小视频,看完之后弹个窗显示 points added,然后有个面板告诉了一万分就能买 flag。

看一下 js 源码,发现有个 buy 和 points 函数:

function buy(self){
    if(arguments[0] === 'flag'){point=10000;}
    if(arguments[0] === 'hint'){point=500;}
    if(money < point){
      alert("you don't have enough points")
    }else{
       $.post("shop.php",
         {
          option: arguments[0]
         },
        function(data,status){
          alert(data);
          location.reload();
        });
     }
}
function points(){

    $.post("points.php",
        {
          points: "1",
          solved: "true"
        },
    function(data,status){
         if(data == 'done'){
             alert("Points added!!");}
         else{alert('Something went wrong');}
         location.reload();

     });
}

在 buy.php 和 points.php 存在 session 操作,因此在前段直接改 money 没用,修改 points.php 的points 数量也没用,只能写脚本访问 10000 次 points.php 再购买 flag,此外题目还有10分钟的限制,超时 session 过期,因此只能写脚本访问 points.php(index 资源太多访问太慢)。

这题由于是外国的比赛,可能是墙的原因脚本怎么也跑不通,就先不放了咕咕咕。

还有两道题目一个是脚本提一个是 .htaccess 文件上传,时间已经不早了就先不复现了咕咕咕,还是老外的比赛有意思,感觉有时间可以看看最近 defcon 和 pwn2own 里的议题,都十分适合那来出题。

Imagin 丨 京ICP备18018700号-1


Your sidebar area is currently empty. Hurry up and add some widgets.