文件上传的复习(upload-labs1-5关)

server/2024/10/21 2:40:35/

什么是文件上传漏洞?

文件上传本身是一个正常的业务需求,对于网站来说,很多时候也确实需要用户将文件上传到服务器,比如:上传图片,资料。

文件上传漏洞不仅涉及上传漏洞这个行为,还涉及文件上传后的进一步解析和处理,以及文件的下载,如果服务器的处理逻辑设计的不够全面,就会导致严重的后果

最简单的文件上传漏洞是指用户上传了一个可执行的脚本文件,并且根据此脚本获得了执行服务器命令的能力。

旧版本的PHP(< PHP 5.3.4以下)还存在"\0" 字符阶段的问题,C语言以"\0"作为字符串结束符,而PHP用专门的结构体来表示字符串,结构体中存储了字符串的长度,所以PHP中的字符串允许存在"\0"字符,如果攻击者上传了一个"1.php\0.jpg"文件,PHP校验时可以通过后缀名的白名单,到那时底层的C语言库在写入文件时,将 "\0" 作为字符串结束符,实际上写入的是名为 "1.php"的文件,如果该文件被放在了公开的目录中,就相当于攻击者上传了一个webshell

注:3,4,5关我是使用phpstudy2018版本完成的,因为最新版本的无法解析我上传的文件

Pass-01(JS前端验证)

源码中提示只能上传 jpg,png,gif文件

按照题目的要求,我们上传一个图片,然后访问它的url

但是发现上传失败

这里我们就无法直接上传php文件了,查看代码后发现,只是在前端页面对输入的文件进行检查,因此可以使用下面两种方式来进行绕过上传php文件

接下来就禁用js,在上传页面 按F12,然后找到调试器,在设置中禁用js

禁用js以后再上传我们要上传的文件,就会发现上传成功

查看:右键我们上传成功的文件,复制链接,然后直接在网址栏中访问

这样就发现已经上传成功了

Pass-02(MIME验证)

查看源码,我们需要把文件类型修改为:image/jpeg

上传php文件,但是发现上传失败

上传一个png文件,发现上传成功了

接下来抓包,修改文件类型

修改之后放包,然后访问url

发现已经上传成功了

文件木马:<?php phpinfo(); ?>

Pass-03(黑名单验证,特殊后缀)

直接上传php文件,发现给出了黑名单

查看代码, 可以看到,这里对后缀为.asp .aspx .php .jsp都进行了拒绝,并且对文件中的特殊字符进行了很多的过滤,使用了很多名单的方式进行了校验,那么我们就可以上传一些没有限制的后缀,例如php3 php4 php5 phtml的文件进行上传就可以了

但是发现页面无法打开

这里去看了别人的wp,要用phpstudy2018版本的

下载好2018版本后按照下面的更改:

31. phpstudy无法解析php2、php3、phtml等文件_小皮不解析php3文件后缀-CSDN博客

记录BUG—在uploadlabs第三关中—关于phpstudy中修改httpd.conf依旧无法解析.php3d等问题_upload-labs无法解析php3-CSDN博客

如果上传的是phpinfo.php文件就会回显这个页面则为正常(如果一直解析不成功的话尝试换一下phpstudy的版本)

 

Pass-04(.htaccess绕过黑名单)

查看代码发现这一关的黑名单更多,那么就尝试用到.htaccess文件的方法了

具体的操作步骤:

先上传.htaccess文件,然后上传一个.png文件(因为我这里.htaccess里面解析的是.png文件)

.htaccess文件中的内容:

<FilesMatch "3.png">
    SetHandler application/x-httpd-php
</FilesMatch>

注释:“3.png”可以换成你自己想要上传的符合题目要求的文件名称,只要你下一步上传相应的文件就可以了

得到这个页面就说明上传成功了

原理为:利用上传到服务器上的.htaccess文件修改当前目录下的解析规则

.htaccess常见配法有以下几种:

AddHandler php5-script .jpg

AddType application/x-httpd-php .jpg

SetHandler application/x-httpd-php

Sethandler 将该目录及子目录的所有文件均映射为php文件类型。
Addhandler 使用 php5-script 处理器来解析所匹配到的文件。
AddType 将特定扩展名文件映射为php文件类型。

.htaccess文件内容如下:

<FilesMatch "1.jpg(你要上传的文件名称)">
SetHandler application/x-httpd-php
</FilesMatch>

Pass-05

查看代码,发现和第四关对比,这关没有转换大小写的代码

这样我们就可以上传大小写混合的后缀名来进行绕过。上传一个2005.Php文件

但是上传之后发现并没有成功

又去查找了其他的方法:

upload-labs关卡5(点和空格绕过)通关思路_upload-labs第五关-CSDN博客

上传2005.php文件,然后抓包,将2005.php改为2005.php. .(这里是点+空格+点)然后上传。

 原理:通过源代码可知,本关对上传文件做了检测,而且还对文件名大小写做了转换。在上传文件后先是删除文件末尾的点,然后首尾去空,去除字符串::$DATA,但是这些操作只执行一次。所以我们可以抓取数据包来修改绕过。我们在数据包中把后缀名改为.php. .,首先他发现有一个点,这时会把他去掉,又发现有一个空格,也会把它去掉,我们这时还有一个点,也就是.php. 由于他只是验证一次,所以不会在去掉我们的点。这样我们上传的文件就变成了.php文件,自然就成功上传了

然后去访问url发现就上传成功了


http://www.ppmy.cn/server/12336.html

相关文章

MemFire解决方案-政企数据库云服务解决方案

方案背景 随着越来越多的政府部门/企事业单位完成数字化转型升级&#xff0c;新技术的应用日益普遍&#xff0c;对系统并发服务能力的需求不断提高。办公OA、档案、门户、监控、财务、ERP、订单等各类系统对数据库的要求越来越苛刻&#xff0c;很多企业/政府部门都面临如下挑战…

使用 IPAM 解决方案简化分布式网络管理

随着组织在数字领域的全球扩张&#xff0c;分布式网络是不可避免的&#xff0c;这意味着&#xff0c;随着 IT 基础设施的发展&#xff0c;组织需要适应&#xff0c;这包括在不断增长的系统需求、应用程序堆栈、各种协议和安全防御中监控、现代化和简化流程和资源。在有效管理现…

全方位解析:深入了解Microsoft Edge浏览器的优势与特性

目录 1. 速度快&#xff1a; 2. 内存占用低&#xff1a; 3. 集成性好&#xff1a; 4. 支持Web标准&#xff1a; 5. 定制化选项&#xff1a; 6. 阅读模式和笔记功能&#xff1a; 7. 搜索引擎优化&#xff1a; 8. 扩展程序库&#xff1a; 9. 跨平台同步&#xff1a; 10…

React-editor-js not showing up in a function component

React-editor-js not showing up in a function component react-editor-js 在react 函数组件中显示不出来 真的&#xff0c;我马上就想放弃它了。但是看它周下载量还挺多&#xff0c;我不信别人没遇到过。于是我继续在网络上挖呀挖。只是我一开始的方向错了。我一直以为我的写…

华为OD机试真题-任务处理-2023年OD统一考试(C卷D卷)

题目描述: 在某个项目中有多个任务(用 tasks 数组表示)需要您进行处理,其中 tasks[i] = [si, ei],你可以在 si <= day <= ei 中的任意一天处理该任务。请返回你可以处理的最大任务数。 注:一天可以完成一个任务的处理。 输入描述: 第一行为任务数量 n,1 <= n …

fakak详解(2)

Kafka和Flume整合 Kafka与flume整合流程 Kafka整合flume流程图 flume主要是做日志数据(离线或实时)地采集。 图-21 数据处理 图-21显示的是flume采集完毕数据之后&#xff0c;进行的离线处理和实时处理两条业务线&#xff0c;现在再来学习flume和kafka的整合处理。 配置fl…

DeepFaceLab小白教程:视频换脸过程

合适那些人阅读&#xff1f; 适合从未使用过DeepFaceLab的群体。 如果你想基于DeepFaceLab完成一次视频换脸的操作&#xff0c;可以看本篇。 下载方式 GitHub https://github.com/iperov/DeepFaceLab 我是用motrix下载。 网盘 https://pan.baidu.com/share/init?surlO4…

若依ruoyi-vue前端组件的使用指南

若依ruoyi-vue提供了丰富的前端组件&#xff0c;可以帮助开发人员快速搭建现代化的Web应用。本文将介绍如何使用Ruoyi Vue的前端组件&#xff0c;包括自定义组件、组件注册和组件通信。 1. 自定义组件 自定义组件允许开发人员根据项目需求创建新的组件&#xff0c;以实现特定…