文件上传之%00截断(00截断)以及pikachu靶场
pikachu的文件上传和upload-lab的文件上传
目录
mime type类型
getimagesize
第12关%00截断,
第13关0x00截断
差不多了,今天先学文件上传白名单,在网上看了资料,差不多看懂了,但是还有几个地方需要实验一下,有请我们pikachu靶场登场,ok呀做题,我爱做题,我爱说实话

英文不会。先翻译一下,搞错了,pikachu好像没有文件上传白名单
没事的,把这个靶场也打一遍,
mime type类型
先看mime type教程MIME 类型 | 菜鸟教程 (runoob.com),这个也是非常简单,意思是只对content-type的内容做了简单的验证,验证是否为图片类型,应该是后端验证吧,毕竟传给服务器了,ok呀这个好像前端验证都没有做,直接可以选择php文件

好像还要把application改成image,content-type: image/png

蚁剑就不连了,路径拼接就好了vul/unsafeupload/uploads/test.php,你妹的,被杀毒软件杀了,我就说半天找不到文件了
pikachu还有一个文件上传的题目,是这个
getimagesize
这个更简单了,只需要在文件头加上个GIF89a的图片格式就好了
ok呀,话不多说直接上uploads靶场第12关好吧
第12关%00截断,
主要是用于get类型(post类型由于不会url编码,所以是0x00截断,0x表示16进制)
前置知识
利用条件(参考文章WEB-00截断与%00截断 | wh1te (lddp.github.io))
利用条件
00截断的限制条件是PHP<5.3.29,且GPC关闭。%00截断
url中的%00(只要是这种%xx)的形式,webserver会把它当作十六进制处理,然后把16进制的hex自动翻译成ascii码值“NULL”,实现了截断burpsuite中16进制编辑器将空格20改成了00。本质上来说,都是利用0x00是字符串的结束标识符,进行截断处理。
ok呀也是不太明白,但是我好像知道单引号在url会自动转化为%27,
所以%27就是assci值中的单引号,ok呀,同理那%00就是assci值中的null字符
就不继续深入思考了,明白了这个,就开始做题
ok啊,上传了个文件,发现他自动把我文件名改了,也只能上传jpeg、png格式的
把Content-Type: image/png改成这样也不行,发现是 白名单上传

继续看代码,在网上找的文章也是没看太懂啊
$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
网上说这是get就是%00,是post就是0x00,
12关源代码$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){$ext_arr = array('jpg','png','gif');$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);if(in_array($file_ext,$ext_arr)){$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;if(move_uploaded_file($temp_file,$img_path)){$is_upload = true;} else {$msg = '上传出错!';}} else{$msg = "只允许上传.jpg|.png|.gif类型文件!";}
}
但是burp又是post传过去的,怎么又是get呢,ok不想分析,在去网上找一下,没找到,就时看
$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;是get还是post,
但是我在实战中怎么看他是post传参还是get传参

好了,直接在要拼接的地方加上我们的test.php%00,后面随机产生的名字就被忽略了


第13关0x00截断
ok呀,好像发现了,这一关和上一关不一样,这一关好像是在代码里面,上一关在url头中,
按照这么理解的话,在url头中是get传参,代码里是post传参吗,
先在php里加上个a,然后再hex找到a,把61改成00,记着要把test.php改成test.png,因为后端会检测图片的格式,但是他又会拼接内容,如果他不拼接路径,是不是就没有这个漏洞了

我把a的61改成00了,这里是16进制,00也就是0x00(0x就是16进制的意思)

然后后面的要拼接的路径都被0x00忽略了,最后就是test666.php了

上传成功

相关文章:
文件上传之%00截断(00截断)以及pikachu靶场
pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断, 第13关0x00截断 差不多了,今天先学文件上传白名单,在网上看了资料,差不多看懂了,但是还有几个地方需要实验一下&#…...
Chainlit集成LlamaIndex并使用通义千问实现和数据库交互的网页对话应用(text2sql)
前言 我在之前的几篇文章中写了如何使用Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用,但是发现Langchain的几种和数据库交互的组件都不够让我满意,虽然已经满足了大部分场景的需求,但是问题还是很多,比如…...
计组复习笔记
计组笔记 汇编部分 通用寄存器(General Registers): AX (Accumulator): 用于累加运算,也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器,通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…...
62. 环境贴图2
环境贴图作用测试 实际生活中光源照射到一个物体上,这个物体反射出去的光线也会影响其他的物体,环境贴图就是用一种简单方式,近似模拟一个物体周边环境对物体表面的影响。 测试:对于PBR材质,如果threejs三维场景不添…...
MATLAB中数据导入与导出的全面指南
在MATLAB中,数据的导入与导出是数据处理工作流中的两个基本步骤。导入是将外部数据加载到MATLAB工作区的过程,而导出则是将工作区中的数据保存到外部文件中。这两个步骤对于数据分析、可视化和结果共享至关重要。本文将详细介绍如何在MATLAB中进行数据的…...
Jenkins从入门到精通,构建高效自动化流程
目录 一、Jenkins简介1、Jenkins的历史与发展(1)Jenkins的起源(2)Jenkins的发展(3)Jenkins的社区与生态系统(4)Jenkins在我国的发展 2、Jenkins的核心功能3、Jenkins的应用场景 二、…...
【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 – 服装…...
如何在电脑上浏览手机界面
联想浏览器中,点击右键-》检查,进入开发者工具: 点击如上,红色框框选中的手机浏览模式即可。...
国产RISC-V案例分享,基于全志T113-i异构多核平台!
RISC-V核心优势 全志T113-i是一款双核Cortex-A7@1.2GHz国产工业级处理器平台,并内置玄铁C906 RISC-V和HiFi4 DSP双副核心,可流畅运行Linux系统与Qt界面,并已适配OpenWRT系统、Docker容器技术。 而其中的RISC-V属于超高能效副核心,主频高达1008MHz,标配内存管理单元,可运…...
Day(16)--File
File File对象就是表示一个路径,可以是文件路径,也可以是文件夹的路径 这个路径可以是存在的,也允许是不存在的 常见的方法 public File(String pathname);//根据文件路径创建文件对象 public File(String parent,String child);//根据父路…...
Axios入门使用
文章目录 Axios入门使用一、引言二、Axios的安装与配置1、安装Axios2、创建Axios实例 三、发送HTTP请求1、GET请求2、POST请求3、并发请求 四、配置和拦截器1、配置默认值2、拦截器 五、错误处理和取消请求1、错误处理2、取消请求 四、总结 Axios入门使用 一、引言 随着前端技…...
大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓
文章目录 基于Flink+Hologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业O…...
关于HTML 案例_个人简历展示02
展示效果 用table进行布局label 标签进行关联 例如:点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…...
Windows 11 24H2 v26100.1742 官方简体中文版
Windows 11 24H2是微软最新推出的操作系统更新,其在人工智能(AI)领域的创新为用户带来了显著的体验提升。该版本的一大亮点是AI Copilot,它能够智能地根据剪贴板内容调整操作上下文菜单,实现更智能化的交互。 此外&…...
【AIGC半月报】AIGC大模型启元:2024.10(上)
【AIGC半月报】AIGC大模型启元:2024.10(上) (1) YOLO11(Ultralytics新作) (1) YOLO11(Ultralytics新作) 2024.10.01 Ultralytics在 YOLO Vision 2024 活动上宣布发布其新的计算机视觉模型 YOLO…...
Codeforces Beta Round 14 (Div. 2) E. Camels (DP)
题目 Bob likes to draw camels: with a single hump, two humps, three humps, etc. He draws a camel by connecting points on a coordinate plane. Now he’s drawing camels with t humps, representing them as polylines in the plane. Each polyline consists of n ve…...
CSID-GAN:基于生成对抗网络的定制风格室内平面设计框架论文阅读
CSID-GAN: A Customized Style Interior Floor Plan Design Framework Based on Generative Adversarial Network 摘要前言II. CSID-GAN METHODA. Overall FrameworkB. Algorithm and Loss Function III. DATASETS AND EVALUATION METRICSA. DatasetsB. Evaluation Metrics IV.…...
02SQLite
文章目录 索引创建索引删除索引索引优点及缺点?避免使用索引 视图创建视图删除视图 事务事务控制命令通过事务方式对数据库进行访问优势: 索引 创建索引 索引(Index)是一种特殊查找表,数据库搜索引擎用来加速数据检索…...
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
在线学籍管理平台系统 目录 基于SpringbootVUE的在线学籍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大…...
JDBC编程
前言: 你是否见过用Java连接数据库的操作,对没错,今天我们要讲的就是这个“高级”操作,做好准备全程高速。 API: 什么是API?我喜欢先把它的全称说一下:Application Programming Interface。简…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
