一、开头废话

我是个fw,_| ̄|○,这场比赛8个小时,只有下午的isw的前两个小时是我的有效做题时间是的,我只写出来了shiro,其余时间都在坐牢。最后靠着学长在awdp修了一道MediaDrive拿了三等奖。

二、复盘

1.MediaDrive

Break

用seay审计源码

查看这三个文件,你会发现他们都有

1
2
3
if (isset($_COOKIE['user'])) {
$user = @unserialize($_COOKIE['user']);
}

这是cookie反序列化,同时在preview.php中存在任意文件读取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$rawPath = $user->basePath . $f;

if (preg_match('/flag|\/flag|\.\.|php:|data:|expect:/i', $rawPath)) {
http_response_code(403);
echo "Access denied";
exit;
}

$convertedPath = @iconv($user->encoding, "UTF-8//IGNORE", $rawPath);
if ($convertedPath === false || $convertedPath === "") {
http_response_code(500);
echo "Conversion failed";
exit;
}

$content = @file_get_contents($convertedPath);

我们可以从代码中知道, @iconv($user->encoding, "UTF-8//IGNORE", $rawPath);会将原始目录转换成utf-8,并忽略无法转换的字符,但是,在User.php中

1
2
3
4
5
6
7
8
9
10
<?php

?>
"""
zip.writestr(path, content)
with open("payload.zip", "wb") as f:
f.write(buffer.getvalue())

if __name__ == '__main__':
zip_creat()

前面的的登录环节没什么可说的,爆破就行

后面就是在插件上传上传zip

打ssrf

不过,flag比较难找,在tmp里

flag{789f537c-278d-4c1e-9b86-d42c4b5ca87f

fix

修好办,换函数即可

这是我在本地起的服务,我认为防护成功

哎,补兑!

整个解法下来,和time也没关系啊∑(O_O;) 不会是非预期罢……

3.isw0

flag1

shiro反序列化

flag2

打CVE-2021-4034