upload 通关pass16-pass20

news2024/10/6 12:38:44

1.pass16 白名单 二次渲染

需要先上传一个正常图片,然后下载下来,跟原图片进行比对,用010 16进制编辑器,把php代码放到没有改变的位置,即一样的地方

在这里插入图片描述

访问:
在这里插入图片描述

2.pass17 白名单 条件竞争

在这里插入图片描述
这题先是上传文件并保存该文件,然后在检查后缀,不是允许上传的文件就删除(unlink),可以利用条件竞争在文件删除前在新建一个文件
burp抓包,随便设一个变量,使用intruder模块进行爆破
在这里插入图片描述

观察文件是否产生,使用python去访问
1.php

<?php file_put_contents('2.php','<?php phpinfo()?>'); ?>

python

url='http://192.168.85.120/upload-labs/upload/1.php'
    while True:
        html=requests.get(url=url)
        if html.status_code==200:
        	print('ok')
            break

访问
在这里插入图片描述

3.pass-18 白名单 文件包含图片马

在这里插入图片描述
这题看着很多代码,检查了后缀名所以后缀需要是允许的那几个
myupload.php改一下文件上传的位置
在这里插入图片描述

burp抓包改后缀
在这里插入图片描述

访问
在这里插入图片描述

4.pass-19 黑名单 ./绕过

在这里插入图片描述
通过代码审计,发现保存的文件名可控,这个地方没有检查上传时的文件后缀,即上传时文件后缀是什么也可以,检查的是保存的文件名的后缀,windows流一些特征都可以使用,没有过滤

burp抓包 加上/.,空格,::$data,点都可以绕过
或者%00截断 upload-19.php%00.jpg %00解码upload-19.php .jpg
需要小于5.3.4,且magic_quote_gpc为off
 访问在这里插入图片描述

5.pass-20 白名单 数组绕过

if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {

        $is_upload = false;
        $msg = null;
        if(!empty($_FILES['upload_file'])){
            //mime check
            $allow_type = array('image/jpeg','image/png','image/gif');
            if(!in_array($_FILES['upload_file']['type'],$allow_type)){
                $msg = "禁止上传该类型文件!";
            }else{
                //check filename
                $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
                if (!is_array($file)) {
                    $file = explode('.', strtolower($file));
                }

                $ext = end($file);
                $allow_suffix = array('jpg','png','gif');
                if (!in_array($ext, $allow_suffix)) {
                    $msg = "禁止上传该后缀文件!";
                }else{
                    $file_name = reset($file) . '.' . $file[count($file) - 1];
                    $temp_file = $_FILES['upload_file']['tmp_name'];
                    $img_path = UPLOAD_PATH . '/' .$file_name;
                    if (move_uploaded_file($temp_file, $img_path)) {
                        $msg = "文件上传成功!";
                        $is_upload = true;
                    } else {
                        $msg = "文件上传失败!";
                    }
                }
            }
        }else{
            $msg = "请选择要上传的文件!";
        }
        
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

进行代码审计,刚开始进行了检查mime类型,需要修改为允许的那三种类型
之后判断文件名是不是没有,没有就从文件原先的名字获取,有从post方式获取save_name的值,然后判断文件是不是数组,不是数组就拆分成数组,如果是数组的话,获取数组的最后一个元素,判断是不是那三种图片类型,不是就继续进行移动文件,在移动文件之前需要获取文件名,reset函数把内部指针指向数组中的第一个元素,加上一个.,获取file数组的所有元素数量-1的元素
通过代码可以看出可以使用传入数组
下方传入的数组为一个,数组元素为2个。索引分别为0和2,这样的话文件命令时会使最后一个为空,因为 f i l e [ 1 ] 为空 , 传入索引为 0 元素的值还可以用 w i n d o w s 一些环境特性的值,点空格 : : file[1]为空,传入索引为0元素的值还可以用windows一些环境特性的值,点 空格 :: file[1]为空,传入索引为0元素的值还可以用windows一些环境特性的值,点空格::data,或/.(windows和linux都可以使用)
burp抓包
在这里插入图片描述
访问
在这里插入图片描述
总结:
在这里插入图片描述
参考文章:
pass-20数组绕过

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

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

相关文章

音质蓝牙耳机哪款好用?2023公认音质好的四款蓝牙耳机推荐

现如今&#xff0c;蓝牙耳机越来越受欢迎&#xff0c;不少人在听歌、追剧、甚至是玩游戏的时候都会戴着它。最近看到很多人问&#xff0c;音质蓝牙耳机哪款好用&#xff1f;针对这个问题&#xff0c;我来给大家推荐四款公认音质好的蓝牙耳机&#xff0c;一起来看看吧。 一、南…

Nginx connect req access 模块

Nginx connect req access 模块演练 limig_conn模块&#xff1a;限制TCP连接数limit_req模块&#xff1a;限制请求频率access 模块&#xff08;allow/deny&#xff09;&#xff1a;限制ip段访问auth_request: 基于HTTP响应状态码做权限控制压测可以使用 postman的 run collect…

AndroidStudio如何进行手机应用开发?

文章目录0、引言1、AndroidStudio开发环境配置2、创建第一个手机应用0、引言 Android手机应用因其搭载于手机&#xff0c;使用便捷&#xff0c;应用被大量开发使用。笔者使用手机多年&#xff0c;用过许多手机软件&#xff0c;在使用的过程中&#xff0c;虽然手机软件能解决大部…

C++开发必知的内存问题及常用的解决方法-经典文章

1. 内存管理功能问题 由于C语言对内存有主动控制权&#xff0c;内存使用灵活和效率高&#xff0c;但代价是不小心使用就会导致以下内存错误&#xff1a; • memory overrun&#xff1a;写内存越界 • double free&#xff1a;同一块内存释放两次 • use after free&#xff1…

【数据结构】二叉树顺序结构及实现

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对…

Surfshark下载到使用完整教程|2023最新

2023年3月16日更新 在正式介绍surfshark的教程( 教程直达学习地址: qptool.net/shark.html )之前&#xff0c;我们可以来看看最近surfshark的服务与产品退化到什么程度了。我曾经是Surshark两年的忠实用户&#xff0c;但是&#xff0c;现在&#xff0c;作为一个负责人的测评&a…

PostMan动态参数及循环调用

最近需要在测试环境批量创建es索引&#xff0c;也就是某个接口需要循环调用且参数还是变化的&#xff0c;但是我又不想写代码和脚本&#xff0c;于是研究了一下postman一些好玩的功能&#xff0c;希望能节约大家的开发时间 一.设置请求参数 1.获取创建索引的请求以及参数&…

ELK+Filebeat日志分析系统

目录 一.ELK基本介绍 1.ELK是什么&#xff1f; 2.组件简介 2.1 ELK组件介绍 2.2 ELFK组件介绍 2.3 其它组件 4.使用ELK的原因 5.完整日志系统的基本特征 二.Elasticsearch的介绍 三.Logstash的介绍 四.Kibana的介绍 五.ELK的工作原理 六.部署ELK日志分析系统 1.环…

0基础学习软件测试有哪些建议

其实现在基础的资料和视频到处都是&#xff0c;就是看你有没有认真的去找学习资源了&#xff0c;去哪里学习都是要看你个人靠谱不靠谱&#xff0c;再好的教程和老师&#xff0c;你自己学习不进去也是白搭在正式选择之前&#xff0c;大可以在各种学习网站里面找找学习资源先自己…

springboot+vue动物园管理系统java

本系统使用的角色主要有系统管理员、注册用户&#xff0c;本系统分为系统前台和系统后台&#xff0c;首先在系统前台&#xff0c;游客用户可以经过账号注册&#xff0c;管理员审核通过后&#xff0c;用账号密码登录系统前台&#xff0c;查看论坛交流、动物展览、原生动物展览、…

HTML5 <head> 标签、HTML5 <i> 标签

HTML5 <head> 标签 实例 HTML5 <head> 标签表示文档的头部&#xff0c;其中包含了与该文档有关的信息&#xff01; 一份在头部带有 <title> 标签的 HTML 文档&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8&…

Linux信号sigaction / signal

Linux信号sigaction / signal 文章目录Linux信号sigaction / signal目的函数原型struct sigaction信号枚举值ISO C99 signals.Historical signals specified by POSIX.New(er) POSIX signals (1003.1-2008, 1003.1-2013).Nonstandard signals found in all modern POSIX system…

虹科教您 | 基于Linux系统的RELY-TSN-KIT套件操作指南(1)——硬件设备与操作环境搭建

RELY-TSN-KIT是一款针对TSN的开箱即用的解决方案&#xff0c;它可以无缝实施确定性以太网网络&#xff0c;并从这些技术复杂性中抽象出用户设备和应用。该套件可评估基于IEEE 802.1AS同步的时间常识的重要性&#xff0c;并借助时间感知整形器来确定性地交付实时流量&#xff0c…

判断完全二叉树(层序遍历)| C

层序遍历 基本思路&#xff1a;利用队列&#xff0c;出上一层&#xff0c;带下一层&#xff08;NULL不入队列&#xff09; &#xff08;C语言需要自己构建队列→【队列】&#xff1c;用链表实现队列&#xff1e; | [数据结构] | C语言&#xff09; 代码 #include "Queu…

代码自动发布系统

之前是jenkins发现gitlab代码更新了就自动获取直接部署到服务器 现在是jenkins自动获取Code之后打包成镜像上传到仓库然后通知docker去拉取更新的镜像 分析 旧∶ 代码发布环境提前准备&#xff0c;以主机为颗粒度静态 新: 代码发布环境多套&#xff0c;以容器为颗粒度编译 …

Typora设置修改字体颜色快捷键

目录 1.typora如何设置修改字体颜色快捷键 2. AutoHotKey软件安装 3.typora关于AutoHotKey的具体操作 1.typora如何设置修改字体颜色快捷键 typora本身是不能直接修改字体颜色的&#xff0c;不过若是想修改还是可以用一些代码去改变的&#xff0c;但是每次都修改一次实在麻烦…

mysql常用的基础命令

通过学习mysql命令提高数据处理和工作效率 基础命令 1.登录MySQL mysql -u root -p 2.查看当前系统所有数据库 show databases; 3.切换数据库 use 数据库名称 4.查看数据库下的所有表 show tables; 5.查看表结构&#xff1b; desc 表名&#xff1b; 6.创建数据库 crea…

MAC OS(M1)安装配置miniconda

一、下载安装miniconda miniconde官网&#xff1a;Miniconda — Conda documentation M1最低只能适配到python3.8 打开终端,进入安装包所在文件夹&#xff0c;使用命令进行安装 bash Miniconda3-latest-MacOSX-arm64.sh一路回车 二、配置环境 安装完成后重启终端&#xf…

Unity ads广告插件的使用

介绍 Unity Ads SDK 由领先的移动游戏引擎创建,无论您在 Unity、Xcode 还是 Android Studio 中进行开发,都能为您的游戏提供全面的货币化框架。 使用 Unity Ads 将各种广告格式合并到游戏中的自然呈现点中。例如,您可以实施激励视频广告来构建更强大的游戏经济,同时为您的…

[C++笔记]vector

vector vector的说明文档 vector是表示可变大小数组的序列容器(动态顺序表)。就像数组一样&#xff0c;vector也采用连续的存储空间来储存元素。这就意味着可以用下标对vector的元素进行访问&#xff0c;和数组一样高效。与数组不同的是&#xff0c;它的大小可以动态改变——…