upload-labs关卡11(双写后缀名绕过)通关思路
文章目录
- 前言
- 一、回顾前几关知识点
- 二、靶场第十一关通关思路
- 1、看源代码
- 2、bp抓包双写后缀名绕过
- 3、检查文件是否成功上传
- 总结
前言
此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、回顾前几关知识点
前几关源代码是验证去除末尾点、首尾去空、大小写过滤以及data流过滤。都是基于window特性绕过的。这一关的源代码就不太一样了,让我们瞧一瞧。
二、靶场第十一关通关思路
- 1、看源代码
- 2、bp抓包双写后缀名绕过
- 3、检查文件是否成功上传
1、看源代码
$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","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");$file_name = trim($_FILES['upload_file']['name']);$file_name = str_ireplace($deny_ext,"", $file_name);$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH.'/'.$file_name; if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}
发现源代码大改,和之前不一样了。发现这串核心代码$file_name = str_ireplace($deny_ext,"", $file_name);意思是如果上传的文件后缀名在黑名单中,就会把此后缀名替换为空。但是这个代码只执行一次,那么我双写后缀名是不是就可以绕过了呢。
2、bp抓包双写后缀名绕过
因为php在黑名单里,应该会被替换为空。我们先上传123.php,看看是不是我们所说的把php后缀名替换为空。(如图所示)

发现是被替换了,那么我们就有思路了。如果后缀名是pphphp是不是就会把中间的php替换为空,最终变成php后缀名了呢?我们试一试(如图所示)

3、检查文件是否成功上传
发现上传成功


如果上传的是一句话木马就可以连接菜刀了。
总结
这一关利用的是由于验证代码中只验证了一次,造成我们可以双写进行绕过,就和之前点空格绕过一样,因为只验证一次,我们可以多写来绕过。此文章是小白自己为了巩固文件上传漏洞而写的,大佬路过请多指教!
相关文章:
upload-labs关卡11(双写后缀名绕过)通关思路
文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的…...
go语言学习之旅之Go语言基础语法二
学无止境,今天继续学习go语言的基础语法 变量(Variables): 变量声明: var x int变量初始化: var x int 10或者可以使用类型推断: x : 10多变量声明: var a, b, c int同时初始化多个变量&#…...
七天.NET 8操作SQLite入门到实战 - SQLite 简介
什么是SQLite? SQLite是一个轻量级的嵌入式关系型数据库,它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几…...
问题 R: 胜利大逃亡(HUST)
#include <deque> #define inf 200000 #include<iostream> #include<queue> using namespace std;// 迷宫坐标 int map[59][59][59] { 0 };// 可访问标记 int visit[51][51][51] { 0 }; // 移动方式 int next1[7][4] { {1,0,0},{-1,0,0}, {0,1,0},{0,-1,…...
项目讲解:让你在IT行业面试中以开发、实施、产品更近一步
1、会议系统项目 项目介绍 提示:可以简单介绍IT技术发展的背景 面试准备 开发 实施 产品 2、医疗项目 项目介绍 提示:可以谈谈你认为IT行业就业方向有哪些,并说出你认为最好的就业领域是什么? 面试准备 开发 实施 产品 3、数字化交…...
Windows 安装 Docker
目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker,并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…...
AI绘画使用Stable Diffusion(SDXL)绘制三星堆风格的图片
一、前言 三星堆文化是一种古老的中国文化,它以其精湛的青铜铸造技术闻名,出土文物中最著名的包括青铜面具、青铜人像、金杖、玉器等。这些文物具有独特的艺术风格,显示了高度的工艺水平和复杂的社会结构。 青铜面具的巨大眼睛和突出的颧骨&a…...
Window下如何对Redis进行开启与关闭
目录 前言1. 图文界面2. 命令行 前言 由于长期使用Linux界面,对于Window下的Redis,不知如何下手。特此记录该博文 特别注意,刚下载好的Redis,如果需要配置密码,可以再该文件进行配置:redis.windows-servi…...
C++ Qt 学习(十):Qt 其他技巧
1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…...
跳台阶游戏(Python排列组合函数itertools.combinations的应用)
给定台阶总数和两种单次可跳级数,编写自定义函数,计算所有的游戏组合方案数量。 (笔记模板由python脚本于2023年11月19日 19:18:48创建,本篇笔记适合熟悉python自定义函数编写,了解排列组合知识的coder翻阅) 【学习的细节是欢悦的…...
【Python百宝箱】Python测试工具大揭秘:从单元测试到Web自动化
前言 在现代软件开发中,测试是确保代码质量和稳定性的关键步骤。Python作为一门广泛应用的编程语言,拥有丰富的测试工具和库,从单元测试到Web自动化,覆盖了多个测试层面。本文将介绍一系列Python测试工具,帮助开发者选…...
〖大前端 - 基础入门三大核心之JS篇㊵〗- DOM事件监听及onxxx的使用
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
解锁潜力:创建支持Actions接口调用的高级GPTs
如何创建带有Actions接口调用的GPTs 在本篇博客中,我们将介绍如何创建一个带有Actions接口调用的GPTs ,以及如何进行配置和使用。我们将以 https://chat.openai.com/g/g-GMrQhe7ka-gptssearch 为例,演示整个过程。 Ps: 数据来源:…...
【发明专利】天洑软件再度收获六项国家发明专利授权
近日,南京天洑软件有限公司再度收获行业内六项国家发明专利授权,专利名称为:一种发电机绕组温度预警方法及装置(专利号:ZL 2022 1 1525605.3),一种CSTR系统的控制方法及装置(专利号&…...
Netty源码学习4——服务端是处理新连接的netty的reactor模式
零丶引入 在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel ,ChannelHandler,ChannelPipeline。 这一篇将学习服务端是如何构建新的连接。 一丶网络包…...
8、信息打点——系统篇端口扫描CDN服务负载均衡WAF
文章目录 获取网络信息获取服务信息获取阻碍信息 获取网络信息 服务器厂商信息(阿里云?腾讯云?) 收集的原因:如果服务器架设在云上,不同厂商的一些配置信息不同。判断方法:直接在ip/域名网站搜相…...
Ant Design for Figma设计系统组件库 支持变量 非社区版
Ant Design for Figma 是基于 Ant Design 设计系统的 Figma 组件库,提供丰富的 UI 组件和交互功能,帮助设计师快速构建高质量的 Figma 设计稿。 Ant Design for Figma 继承了 Ant Design 的设计理念和风格,提供丰富的 UI 组件和交互功能&…...
k8s的高可用集群搭建,详细过程实战版
kubernetes高可用集群的搭建 前面介绍过了k8s单master节点的安装部署 今天介绍一下k8s高可用集群搭建 环境准备: vip :192.168.121.99 keeplive master01:192.168.121.153 centos7 master02:192.168.121.154 centos7 master03&a…...
【20年扬大真题】编写对数组求逆的递归算法
【20年扬大真题】 编写对数组求逆的递归算法 void swap(int* a, int* b) {int tmp *b;*b *a;*a tmp; } void Ni(int arr[],int left,int right) {if (left > right) {return;}swap(&arr[left], &arr[right]);Ni(arr, left 1, right - 1); } int main() {int ar…...
日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2
slf4j 是众多日志框架接口的集合(俗称日志门面),它不负责具体的日志实现,只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用,这里主要…...
ClawPanel:AI Agent统一管理面板,内置智能助手实现自动化运维
1. 项目概述与核心价值 如果你正在寻找一个能帮你统一管理 OpenClaw 和 Hermes Agent 这两个热门 AI Agent 框架的工具,并且希望这个工具本身也足够智能,能帮你解决安装、配置、排障等一系列繁琐问题,那么 ClawPanel 就是你一直在等的那个“…...
告别Prompt Engineering!AI-Native Development的5大原生能力标准(ISO/IEC AWI 58822草案首曝)
更多请点击: https://intelliparadigm.com 第一章:什么是AI-Native Development?2026奇点智能技术大会给你答案 AI-Native Development(AI原生开发)并非简单地在传统应用中调用大模型API,而是将AI能力作为…...
软工毕业设计最新项目选题大全
文章目录🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取?1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢?🚩2 选题概览🚩 3 项目概览题目1 : 深度学习社交距离检…...
别再关DRC警告了!手把手教你用AD19正确设置3D封装高度偏移,解决PCB叠层干涉
彻底解决PCB叠层干涉:Altium Designer 19中3D封装高度偏移的实战指南 在PCB设计领域,3D封装的高度管理一直是工程师们容易忽视却又至关重要的环节。许多硬件工程师在遇到DRC(设计规则检查)警告时,第一反应往往是寻找关…...
如何快速掌握FramePack:面向初学者的完整视频帧压缩实战指南
如何快速掌握FramePack:面向初学者的完整视频帧压缩实战指南 【免费下载链接】FramePack Lets make video diffusion practical! 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack FramePack是一项革命性的视频帧压缩技术,它通过创新的神经…...
如何永久守护你的微信记忆?WeChatMsg让珍贵对话永不消散
如何永久守护你的微信记忆?WeChatMsg让珍贵对话永不消散 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...
上海AI Lab:真实场景虚拟细胞模型基准评测
摘要 虚拟细胞模型旨在通过计算预测细胞对各类扰动的响应,已成为药物研发与精准医疗的前沿手段。但当前研究存在明显缺口:各类模型在标准基准测试中表现优异,但其预测结果在实际应用中的生物学意义尚不明确。这主要源于现有评估方案的缺陷——评估设置过度简化、流程不统一…...
从真值到补码:计算机如何用0和1表示正负与运算
1. 为什么计算机需要表示负数? 当你用计算器做减法时,可能从没想过计算机内部其实只会做加法。我第一次接触这个概念时也很惊讶——原来计算机用补码表示负数,就是为了把减法变成加法运算。这就像魔术师的手法,看似简单的0和1背后…...
手把手教你:误删pyvenv.cfg后,如何快速重建Python虚拟环境(附详细步骤)
手把手教你:误删pyvenv.cfg后,如何快速重建Python虚拟环境(附详细步骤) 虚拟环境是Python开发中的"隔离舱",而pyvenv.cfg文件则是这个隔离舱的"控制面板"。当你发现误删这个关键文件后,…...
技术架构深度解析:douyin-downloader抖音下载器 - 多策略异步下载与智能队列管理方案
技术架构深度解析:douyin-downloader抖音下载器 - 多策略异步下载与智能队列管理方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplicatio…...
