upload(pass01~pass09)

2023-11-12

Pass-01

先查看提示:
在这里插入图片描述
在客户端使用JS对图片进行检查然后上传。
解决方法:在客户端向服务端发送请求时抓包,对包进行修改,然后发送给服务端。
使用burp进行抓包,抓包内容如下:
在这里插入图片描述
把一个php文件的后缀改成jpg上传,在抓包时把filename的参数重新更换为1.php,然后放包。
在这里插入图片描述

返回之后,在控制台可以看到,上传的就是我们的php文件,点击过去就能访问。

Pass-02

看提示:本pass在服务端对数据包的MIME进行检查!
查看源码可以知道,他支持的MIME类型只有:
1. image/jpeg
2. image/png
3. image/gif
解决方法:我们可以上传一个php文件,在抓包之后,对文件MIME进行修改就可以。
在这里插入图片描述
将圈起来的部分更换为image/png,然后放包即可。
在这里插入图片描述
可以看到上传成功。

Pass-03

查看提示:本pass禁止上传.asp|.aspx|.php|.jsp后缀文件!
光从提示上无法明白是从什么地方去进行防护的,再查看一下源码:

$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 . '文件夹不存在,请手工创建!';
    }
}

可以看到这是一个黑名单进行防护,这个时候,我们可以把上传的php文件后缀名更改为php3活着php5去进行一个绕过。原因是因为php语言除了可以解析以php为后缀的文件,还可以解析php2,php3、php4、php5这些后缀的文件。

Pass-04(未解决)

查看提示:本pass禁止上传 .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件!
可以看到,他的黑名单防护是更加严谨了,不仅防止php2~php5,而且对大小写也进行了一个防范。
这里我是使用PHP study中的apache进行的一个靶场搭建,这个时候我们可以正对apache去上传一个htaccess文件对jpg去做一个重新解析。

<FilesMatch "\.jpg">
  SetHandler application/x-httpd-php
</FilesMatch>

这个文件是当文件后缀名为jpg的时候,会对其进行php解析。
新建记事本写入,另存为,文件名为.htaccess,文件类型为所有文件。
在这里插入图片描述
然后先上传这个.htaccess文件,再去上传一个php脚本(重新修改文件名为1.jpg

这个时候我去访问http://localhost/upload-labs/upload/1.jpg即我上传的jpg时,jpg依旧没有解析成php。
原因是在Windows系统中,apache是默认不去执行.htaccess文件的,如果是在Linux系统中就没有问题了。

我们去修改一下apache的配置文件:
在这里插入图片描述
这个None改为All就行。
重新执行可以访问。但是结果依旧是失败,无法访问,所有先放着,解决了再说。

Pass-05(失败)

查看提示:上传目录存在php文件(readme.php)
基本是什么信息都没有
查看源码:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
   
    if (file_exists(UPLOAD_PATH)) {
   
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

upload(pass01~pass09) 的相关文章

随机推荐

  • vue3+vue3-video-player+vue3-danmaku实现直播和弹幕

    视频组件 vue3 video player 首先下载vue3 video player 官方文档 Vue3VideoPlay 下载 npm i vue3 video play save 在main ts js注册 import creat
  • MongoDB 基础入门

    MongoDB 是什么 MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统 由 C 编写的 MongoDB 提供了 面向文档 的存储方式 操作起来比较简单和容易 支持 无模式 的数据建模 可以存储比较复杂的数据类型
  • 030_Message消息提示

    1 Message消息提示 1 1 Message消息提示常用于主动操作后的反馈提示 与Notification的区别是后者更多用于系统级通知的被动提醒 1 2 Options 参数 说明 类型 可选值 默认值 message 消息文字 s
  • [JAVAee]spring-Bean对象的执行流程与生命周期

    执行流程 spring中Bean对象的执行流程大致分为四步 启动Spring容器 实例化Bean对象 Bean对象注册到Spring容器中 将Bean对象装配到所需的类中 启动Spring容器 在main方法中获取spring上下文对象并配
  • 算法分析与设计期末复习

    第一章 算法概述 1 算法 解决问题的一种方法或过程 由若干条指令组成的有穷指令 2 算法的性质 输入 有零个或多个输入 输出 有至少一个输出 确定性 每条指令是清晰的 无歧义的 有限性 每条指令的执行次数和时间都是有限的 3 算法与程序的
  • Win10下安装Intel Visual Fortran2019具体步骤及初始调试过程。

    相关程序安装包可以搜索微信公众号 火耳软件 他们的公众号上基本所有软件都能下载到 Win10下安装Intel Visual Fortran2019具体步骤及初始调试过程 先装Visual Studio2017 安装步骤省略 可在网上找到 再
  • eclipse异常类之自定义异常和assert

    1 在实际开发中 可以利用异常的处理机制来处理业务逻辑错误 就是使用自定义异常 例如用户名密码输入错误 自定义异常通常都是通过继承一个异常来实现 1 Throwable 2 Exception 3 RuntimeException 自定义异
  • Scrapy框架爬取新闻!

    步骤 创建一个scrapy项目 分析网页 完成代码 保存CSV文件 创建一个scrapy项目 本次爬取网站为 https wz sun0769 com app politics index cmd切换目录scrapy startprojec
  • 基于Netty手撕RPC框架

    基于Netty手撕RPC框架 文章目录 基于Netty手撕RPC框架 1 项目结构 2 api 3 provider 1 自定义注解 2 实现UserServiceInterface 3 NettyServer的客户端 4 NettyHan
  • 你参与的APP开发项目安全吗?

    Android将安全设计贯穿系统架构的各个层面 覆盖系统内核 虚拟机 应用程序框架层以及应用层各个环节 力求在开放的同时 也恰当保护用户的数据 应用程序和设备的安全 Android安全模型主要提供以下几种安全机制 进程沙箱隔离机制 应用程序
  • Qt内存管理(五) 自动垃圾回收机制

    实现自动垃圾回收的工具主要是Qt对象清理器 也就是QObjectCleanupHandler类 它监视多个QObject对象的生命期 当你想知道被别人拥有的QObject对象是否被删除时 这个类就派上了用场 例如引用 referencing
  • mysql报错:1264-Out of range value for column ‘字段‘ at row 1

    发现程序部分内容写不到数据库 于是来排查是否为数据库的问题 mysql数据库报错 1264 Out of range value for column guild leader id at row 1 如图所示 通过设计表 发现该字段的值超
  • java定位_java调用百度定位api服务获取地理位置示例

    package test import java io BufferedReader import java io IOException import java io InputStream import java io InputStr
  • C++智能指针之unique_ptr(保姆级教学)

    目录 unique ptr 概述 涉及程序 初始化 手动初始化 std make unique函数 C 14 unique ptr常规操作 不支持操作 该指针不支持拷贝和赋值操作 所以不能拷贝到容器里 移动语义std move releas
  • Baxter抓取物块——基于单应性矩阵(二)

    之前写了Baxter抓取物块的视觉部分 见一 接下来说一说剩下的 比较简单的模块 机械臂末端位姿获取 Baxter启动后会将自身各坐标系的变换关系发布到 tf 话题中 我们只需要使用TF包 具体参考wiki 即可 定义的current po
  • 1-数据结构-线性表之顺序表

    定义 顺序表 主体是数组 在这基础之上 多了记录数组容量和数据个数的两个变量 从而组成了一个结构体 这里叫顺序表类型 代码 typedef struct sqlist sldatatype a int size int capacity s
  • 花旗金融2020春招面经(offer)

    面试刚开始是英文自我介绍 英文介绍项目 英文交流几个问题 接着是Java基础知识 数据库知识 面试官很好 很多问题并不会太为难你 还会询问你的工作意向 面完大概3天就来了offer 面试问题和答案主要整理如下 Java集合类 collect
  • 基于KNN-Dense sift的图像识别(手势识别)

    K 近邻算法 KNN 原理 最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来 当测试对象的属性和某个训练对象的属性完全匹配时 便可以对其进行分类 但是存在一些问题 如不可能所有测试对象都会找到与之完全匹配的训练对象 其次就是存在
  • 解决vue3中 import type { FormInstance } from ‘element-plus‘出现报错

    前言 在使用element plus的form表单组件时 引入FormInstance类型 结果出现以下错误 模块 element plus 没有导出的成员 FormInstance 你是想改用 import FormInstance fr
  • upload(pass01~pass09)

    文章目录 Pass 01 Pass 02 Pass 03 Pass 04 未解决 Pass 05 失败 自己的一些尝试 后续 Pass 06 Pass 07 Pass 08 Pass 09 Pass 01 先查看提示 在客户端使用JS对图片