【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

一,前期准备环境和工具

1,vmware 16.0安装

若已安装,请忽略

【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客文章浏览阅读186次,点赞9次,收藏2次。【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0_67844671/article/details/133609717?spm=1001.2014.3001.5502

2,win2003虚拟机的安装

若已安装,请忽略

【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_win2003server安装教程_网络安全_Aini的博客-CSDN博客文章浏览阅读183次。【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_win2003server安装教程https://blog.csdn.net/m0_67844671/article/details/133675835?spm=1001.2014.3001.5502

3,pikachu靶场安装

pikachu靶场的话我们用不到,但是讲了如何安装phpstudy2018,360zip,notepad++等工具,这些工具会用到

【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Aini的博客-CSDN博客文章浏览阅读148次,点赞11次,收藏2次。【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)https://blog.csdn.net/m0_67844671/article/details/133682360?spm=1001.2014.3001.5502

4,Burp Suite 抓包工具安装

若已安装,请忽略

【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置-CSDN博客文章浏览阅读134次。【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置https://blog.csdn.net/m0_67844671/article/details/133843910?spm=1001.2014.3001.5502

二,文件上传下载靶场安装

2-1 靶场资源下载

靶场及用到的工具百度网盘下载地址如下:

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1E2UWMOFhM9xmju51m8Lu9Q?pwd=8888
提取码:8888 
现在已经准备好的环境应该如下:

win2003 系统

phpstudy2018  ----- 提供web服务

Burp Suite抓包工具 ---- 可以安装在win10虚拟机或者物理机上

360zip,notepad++ ---------- 非必需,但是win2003上没有解压缩工具和记事本

2-2 靶场安装 

 1,从工具文件家里把upload文件夹放到web服务器根目录上

2,启动我们的web服务器 

3,查看服务器IP地址

win + r 打开命令框输入cmd回车 ,然后输入ipconfig

4,在物理机上ip地址加跟目录访问 192.168.31.159/upload 

到此靶场安装完成 

三,文件上传下载 1-5 关

3-1 第一关:

第一关是前端校验绕过,之前学习的时候已经学过了,可以直接修改代码绕过,或者抓包修改绕过

那就源代码绕过。鼠标右击,点击检查

不过谷歌浏览器就是有点问题,这样行不通,可以用火狐浏览器试一下

 提示uploads文件夹不存在,请手工创建,所以在upload文件夹下还需要创建一个upload文件夹

 

创建好了文件夹以后,回到火狐浏览器继续试一下

 应该是上床成功了,我们去upload文件夹下看看

 确实已经上传成功了,第一关就这样过了

 

第二种就是抓包修改,你们还记得吗,先把webshell后缀改为png或jpg,然后上传的时候抓包,数据包中把后缀也改过来,这个就留给你们自己试一下,之前讲的时候详细讲过了的 

3-2 第二关:

可以查看源码,发现它检查的是mime类型,之前也讲过了这个如何绕过,就是抓包改content-type改一下

如果直接选择php结尾的webshell的话就提示文件类型不正确 

 我们上传的时候抓包,该文件类型试一试 ,源代码里面已经给了白名单

上传成功了 

3-3 第三关:

黑名单绕过之php3、php5

大家可以看看源代码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array('.asp','.aspx','.php','.jsp'); // 黑名单$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//删除文件名末尾的点$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA,这个怎么绕过,后面会将$file_ext = trim($file_ext); //首尾去空if(!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path =
UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;            if (move_uploaded_file($temp_file,$img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

这里是黑名单验证(‘.asp‘,‘.aspx‘,‘.php‘,‘.jsp‘),我们可上传php3,php5...等这样可以被服务器解析的后缀名,当然,这个是根据服务器的配置来,如果配置中可以被解析,那么我们就可以上传这样的文件,不过现在apache等默认是不支持这种文件解析了。比如下面这种  

 现在默认是解析不了的,除非改apache的配置文件  

我们选择了一个php3的文件,结果能上传成功了

但是我们看看它能不能执行

192.168.31.159/upload/upload/202310291406466984.php3

 因为apache默认不会运行php3,php5结尾的文件

 

让apache解析,修改httpd配置文件,如下位置  

AddType application/x-httpd-php .php .phtml php3 php5

随便找个位置,然后加上上面那句话 ,保存

 

重启服务器 

重试以后还是一样的原因,不过这种漏洞很少见,一般服务端不会开启那个配置,而且默认是关闭的,所以即便上传成功了,也没办法以php代码执行,除非想办法改后缀

3-4 第四关:

黑名单绕过 .htaccess和文件名叠加特性绕过

分析代码发现,这里对上传的后缀名的判断增加了,php3.php5....已经不允许上传,但是没有限制.htaccess文件的上传,所以我们依然可以使用。

这是也是黑名单中的一种方法,黑名单中没有将这个后缀名的文件加入黑名单,那么我们就可以利用这种文件来进行攻击,这种文件是apache的一个配置文件,里面我们写了三行代码。可以说是,这个文件中可以改apache的配置,导致apache出现解析漏洞。  

<FilesMatch "">
SetHandler application/x-httpd-php
</FilesMatch>

我们只要把这个文件上传上去,然后再上传一个jpg啊之类的可上传的后缀名文件上去,那么apache都会当作php文件来解析,我这里就不上传了,比如我们在upload文件夹中放这么两个文件:  

 

上传以后访问后的效果 

 

3-5 第五关:

大小写混合绕过

分析代码,发现以.htaccess为后缀的文件已经不允许上传,并且上传的文件被改名字了,所以我们上面的方式都不行了,但是 $file_ext = strtolower($file_ext); //转换为小写 这一句没有了,我们就可以使用文件名后缀大小写混合绕过,把1.php改为1.phP...来上传  

比如选了一个tou.pHP文件就成功上传了 

 

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

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

相关文章

生活日用品经营小程序商城的作用是什么

生活日用品如牙膏牙刷、护手霜等小产品是人们生活所需&#xff0c;传统客户会通过线下超市商场购买&#xff0c;但现在的消费者往往会选择线上渠道购买&#xff0c;省时省力坐在家里等货上门即可。 因此对商家来说&#xff0c;需要打通线上渠道才能获得更多生意&#xff0c;提…

HCIA数据通信——交换机(Vlan间的通信与安全)

前言 之前的提到了交换机的概念和实验。不过交换机的一些功能还没有说完&#xff0c;我们的实验也仅仅是阻止相同地址段的IP地址互通&#xff0c;也没有用到子接口和路由器。显然&#xff0c;那样的配置过于简单。 端口安全 Port Security&#xff08;端口安全&#xff09;的功…

ActiveMQ

ActiveMQ 安装 下载网址&#xff1a;ActiveMQ 一定要和自己安装的jdk版本匹配&#xff0c;不然会报错 下载到本地之后解压缩 有可能端口号被占用 解除端口号占用&#xff0c;参考&#xff1a;Windows_端口被占用 打开cmd 查询所有的端口号 netstat -nao查询指定端口号 n…

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述&#xff08;如果拓扑排序不清楚可以去做一下lc 207. 课程表&#xff09; 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…

基于入侵杂草算法的无人机航迹规划-附代码

基于入侵杂草算法的无人机航迹规划 文章目录 基于入侵杂草算法的无人机航迹规划1.入侵杂草搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用入侵杂草算法来优化无人机航迹规划。 …

记录几个常用的docker镜像

背景 Docker 部署有着非常多的优势&#xff0c;可以帮助提高开发、测试和部署的效率&#xff0c;降低成本&#xff0c;使应用更具可移植性和可扩展性&#xff0c;包括但不限于 标准化应用发布&#xff0c;跨平台和主机使用&#xff1a;Docker的镜像提供了标准化发布环境&…

三篇论文:速览GPT在网络安全最新论文中的应用案例

GPT在网络安全领域的应用案例 写在最前面论文1&#xff1a;Chatgpt/CodeX引入会话式 APR 范例利用验证反馈LLM 的长期上下文窗口&#xff1a;更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性和GPT类似的步骤&#xff1a;Conversational APR 对话式A…

Visual Studio Code的下载与安装

Visual Studio Code&#xff08;简称 VS Code&#xff09;是由 Microsoft 开发的免费、开源的文本编辑器&#xff0c;适用于多种操作系统&#xff0c;包括 Windows、macOS 和 Linux。它的设计目标是成为一款轻量级、高效的代码编辑工具&#xff0c;同时提供丰富的扩展和功能&am…

mysql查看数据表文件的存放路径

mysql查看数据表文件的存放路径_怎么看mysql表的位置在哪-CSDN博客 问题&#xff1a; 我们在mysql的安装目录中没有找到data&#xff08;数据库存放的地方&#xff09;的文件夹&#xff0c;我们需要找到数据库文件data的存放目录。 解决方法&#xff1a;在mysql的cmd中输入以下…

windows8080端口占用

查看端口占用 netstat -ano | findstr “8080”查看占用进程 tasklist | findstr “4664”关闭占用进程 taskkill /f /t /im httpd.exe

【Jenkins】新建任务FAQ

问题1. 源码管理处填入Repository URL&#xff0c;报错&#xff1a;无法连接仓库&#xff1a;Error performing git command: ls-remote -h https://github.com/txy2023/GolangLearning.git HEAD 原因&#xff1a; jenkins全局工具配置里默认没有添加git的路径&#xff0c;如果…

VBA技术资料MF75:测量所选单元格范围的高度和宽度

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

基于水循环算法的无人机航迹规划-附代码

基于水循环算法的无人机航迹规划 文章目录 基于水循环算法的无人机航迹规划1.水循环搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用水循环算法来优化无人机航迹规划。 1.水循环…

51单片机-串口

电脑与单片机通过串口交互 设置波特率&#xff08;根据这个代码&#xff0c;去配置urt_Init()&#xff09; 参照上面配置下面这个&#xff0c;然后删掉上面这个代码 使用SUBF进行发送&#xff0c;TI0代表结束&#xff0c;结束后需要复位 下载、打开串口&#xff0c;设置波特率…

轻量封装WebGPU渲染系统示例<2>-彩色立方体(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/VertColorCube.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. …

Jmeter 接口测试,参数值为列表,如何参数化?

最近在我的教学过程中&#xff0c;我的一个学生问了我一个问题&#xff0c;他们公司的一个接口参数值是列表&#xff0c;列表中值的数量有多有少&#xff0c;问我在 jmeter 中如何让这个参数的值进行参数化&#xff1f; 看到这种问题&#xff0c;你的第一反应是什么&#xff1f…

idea 提升效率的常用快捷键 汇总

点击File --> Settings --> keymap便可进入看到 IDEA 提供的快捷键。我们也可以搜索和自定义所有快捷键 下面13个事我常用的快捷键&#xff0c;后面还有全部&#xff0c;可以当做字典来查 1.当前文件下查找&#xff1a;CtrlF 当前文件下替换&#xff1a;CtrlR 2.当前…

postgresql 实践

1. 环境搭建 参考&#xff1a;http://www.lvesu.com/blog/main/cms-532.html 1.1. 安装依赖 # 需要安装 postgresql-devel 插件 yum install postgresql-devel* # 安装 pg 和 py 的驱动&#xff1a; # Debian系: apt-get install libpq-dev python-dev # RedHat系&#xff1…

NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理

node-sass安装问题处理 1.问题2.处理2.1 方案一【我的环境失败】2.2 方案二【成功】2.3 方案三【成功】 1.问题 gyp verb which failed Error: not found: python2 # 1.添加Python27的安装路径到环境变量 gyp verb check python checking for Python executable "python…

Controller接收Postman的raw参数时,属性值全部为空

Controller接收Postman的raw参数时&#xff0c;属性值全部为空 情景再现 在进行业务代码的编写过程中&#xff0c;使用Postman等工具调用Controller接口时&#xff0c;发现属性值全部为空后端代码如下&#xff1a; Requset对象为&#xff1a; public class QuerySkuRequest …