当前位置: 首页 > article >正文

文件上传-Windows点号绕过

[题目信息]:

题目名称题目难度
文件上传-Windows点号绕过1

[题目考点]:

Windowsw文件系统对于.号,空格等符号的处理

[Flag格式]:

SangFor{2_LHZmrVlIN6uJHH0RTGh1JvQjFP2uyO}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

1、实验主页

2、对于上传点的测试思路

3、首先判断是服务端检测还是服务端检测

创建一个.xxx的任意文件;

上传.jpg后缀文件,并使用burp抓包;

通过回显,可以看出文件储存位置和文件名;

1、通过burp修改文件后缀为php,查看是否有上传检测;

通过回显结果可以看出存在后端验证,那接下来的绕过思路可以分为两步;

  1. 确认是白名单验证还是黑名单验证;
  2. 如果是黑名单验证确认服务器是windows系统还是linux系统;
  3. 如果是白名单,在后面题目再进一步分析;

2、上传任意文件后缀,判断是黑名单还是白名单检测;

黑名单验证;简单的理解,黑名单验证即不允许用户上传什么样的文件;白名单验证;即为只允许用户上传什么样的文件;

如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证仅不允许如.php等文件后缀;

通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;

修改文件头为GIF89a,动态GIF图片是一个以GIF89a开头格式存储的文件

uploading.4e448015.gif正在上传…重新上传取消

xxx文件能够上传成功,则证明服务器后端验证属于黑名单格式;

3、验证服务器操作系统

当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;

验证Windows操作系统还是Linux操作系统可以通过改变url地址的大小写加以区分,Windows操作系统大小写不敏感,Linxu操作系统大小写敏感;

我们将upload.php修改为Upload.php,可以成功访问,因此可以证明服务器操作系统为Windows;

现在已经验证:

  1. 服务器后端为黑名单验证;
  2. 服务器操作系统为Windows;

因此可以利用Windows操作系统文件系统对点号处理的特性:

当我们创建一个文件,当它的文件名以点好结尾时,会自动去除点好;

我们便可以利用该特性,上传一个xxx.php.的文件绕过后端代码黑名单的验证。同时,保存在Windows系统时,会去除点好,保证php文件的正常访问解析

访问/upload/test.php,成功解析php文件;

获取flag请学员思考测试;


http://www.kler.cn/a/563660.html

相关文章:

  • kafka-新增topic副本数
  • 【第八节】C++设计模式(结构型模式)-Decorator(装饰器)模式
  • 【Python爬虫(86)】元宇宙浪潮下,Python爬虫能否乘风破浪?
  • python单例模式魔法方法
  • 【Rust中级教程】2.10. API设计原则之受约束性(constrained) Pt.1:对类型进行修改、`#[non_exhaustive]`注解
  • DINOv2 + yolov8 + opencv 检测卡车的可拉拽雨覆是否完全覆盖
  • C++的多态
  • 【前端基础】Day 2 HTML
  • KIMI K1.5:大规模强化学习在大语言模型中的应用与工程实践
  • 子组件如何通过v-model实现数据的双向绑定
  • Holoens2开发报错记录02_通过主机获取彩色和深度数据流常见错误
  • Java 面试篇-Redis 专题
  • Django项目开发的网站展示来自fasta文件的蛋白质名称和序列的可视化表格
  • 【FL0091】基于SSM和微信小程序的社区二手物品交易小程序
  • androidstudio 运行项目加载很慢,优化方法
  • 什么是大语言模型
  • nodejs用ws模块反向代理socks5数据,即用ws写服务端和客户端及加密
  • Dify私有化部署自己的AI Agent
  • 【工作流】Spring Boot 项目与 Camunda 的整合
  • Gartner发布安全地响应 DeepSeek指南:DeepSeek相关关键安全挑战及其安全控制措施