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) 的相关文章

  • 编辑类名中带有空格的元素的 css 样式

    我正在创建一个 tumblr 我必须编写一个外部 CSS 文件 但我在编辑 post 元素的 css 样式时遇到问题 这是它的结构 li class post quote other code li 问题是类名中有空格 我如何创建一个 CS
  • 未捕获的 TypeMismatchError:无法在“CanvasRenderingContext2D”上执行“drawImage”

    我对以下代码片段有疑问 var o inserted motive find span contains document documentElement o 0 b fillText m i h b drawImage d i h e f
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • 如何在没有 JavaScript 的情况下预加载图像?

    在我的 HTML 页面之一上 当我将鼠标悬停在某些链接上时 会显示一些大图像 并且加载这些图像需要一些时间 我不想使用 JavaScript 来预加载图像 有什么好的解决办法吗 HTML5 有一种新方法可以做到这一点 即link prefe
  • 如何去掉单词末尾多余的连字符

    我有句话我已经放了 shy 里面 它可以使用连字符 直到我达到足够小的屏幕尺寸 然后它在末尾添加一个额外的连字符 编辑 无法在 jsfiddle 中重现它 因为它似乎对 html 的解释不同 不过我可以展示问题的图片 h3 Flu shy
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • 扩展构建器中的“映射到现有表”显示 TYPO3 中的奇怪问题

    在我的扩展中MyExt 我映射了模型Page to pagesTYPO3 中的表 首先它向我展示了type mismatch错误 无论如何我继续保存它 会发生以下情况 我的页面树变成这样 我的新记录表单仅显示 UID 而不显示标题 My P
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 如何为 TBODY 应用垂直滚动条

    我的表中有 4 列和 5 行数据 我必须为 TBODY 应用垂直滚动条 TH 标题内容不应滚动 我对场景进行了编码 并且在我将滚动类应用于 TBODY 之前它工作正常 一旦我将滚动样式类应用于 TBODY 它就会破坏之前的对齐方式 任何人都
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index
  • 如何:带有 onclick 的 div 位于另一个带有 onclick 的 div 中

    只是一个简单的问题 我遇到了 div 与 onclick javascript 之间的问题 当我点击内部 div 时 它应该只触发它的 onclick javascript 但外部 div 的 javascript 也会被触发 用户如何点击
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 在具有多级分组的 HTML 表格中显示数据

    我必须通过使用 rowspan 进行分组来显示 HTML 表中的一些数据 下面是预期的 GUI 我有如下所示的 JSON 数据 JSON数据here https jsoneditoronline org id 1014438e5489485
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航

随机推荐

  • 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对图片