【CISCN2023】unzip(软连接的应用)

作者 by Yichen / 2023-12-20 / 暂无评论 / 60 个足迹

[链接]()复现一下去年国赛的题目,界面如图,随便上传一个文件得到上传的逻辑代码
屏幕截图 2023-12-20 141334.png
<?php
error_reporting(0);
highlight_file(__FILE__);

$finfo = finfo_open(FILEINFO_MIME_TYPE);<br />if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){<br />exec('cd /tmp && unzip -o ' . $_FILES"file");
};

//only this!

$finfo, $_FILES"file") === 'application/zip这里看到检测文件是否为zip文件,提示了应该上传zip文件,里面放个马
exec('cd /tmp && unzip -o ' . $_FILES"file");这里将zip文件解压到/tmp目录,/tmp没法访问,我们所能访问的是/var/www/html即网站的根目录,所以在这道题中了解到了软连接的应用

unzip命令就可以建立软连接,软连接的简单理解就是就是可以将某个目录连接到另一个目录或者文件下,那么我们以后对这个目录的任何操作,都会作用到另一个目录或者文件下。

关于软连接命令:ln -s [源文件或目录] [目标文件或目录]
eg: ln –s /var/www/test test
当前路径创建test 引向/var/www/test 文件夹
需要注意的是软链接的源文件必须写绝对路径,否则建立的软链接文件就会报错,无法正常使用

具体关于软连接的可以看这个https://developer.aliyun.com/article/909822

我的测试结果如下
屏幕截图 2023-12-20 153313.png(注意目标文件夹要通过ln命令来创建,不然会创建一个html(与图中相符)文件夹)

所以根据以上的分析,我们需要创建一个软连接文件夹(连接到/var/www/html),然后上传该文件夹的压缩文件,然后再上传一个包含木马的同名文件夹压缩文件,让该文件夹在解压后覆盖软连接文件夹,实现将木马直接解压到网站根目录(/var/www/html)

具体操作如下:
创建软连接文件夹:
ln -s /var/www/html link
zip --symlinks link.zip link
屏幕截图 2023-12-20 154115.png

然后删除link(防止与文件夹重名)这个文件,创建一个名为link的文件夹,然后在这个文件夹下写入带马的Php文件(因为之前我们软连接的文件叫做link,所以我们要让这个压缩在这个文件夹下面)
屏幕截图 2023-12-20 154604.png

接下来进行上传,查看获得flag屏幕截图 2023-12-20 154937.png

独特见解