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

文件上传题目练习

之前学习文件上传的时候都是通过练习ctfhub上的题,知道有upload-labs这个靶场,但是还没尝试过,现在重新复习就打算打一下这个靶场

Pass-01

发现仅仅是弹出对话框,说明是前端验证

直接F12禁用js就可以了

上传成功

蚁剑测试连接,后面每题都验证太复杂了,就省了,其实只要能够访问一般都没什么问题,还要结合文件包含漏洞,在中间插入/include.php?file=upload即可

Pass-02

说明是后端服务器验证

查看源代码,发现只能上传这三种图片类型文件 

上传一个.png的木马文件抓包修改后缀

上传成功

Pass-03

后端验证,并且有黑名单绕过,告诉了不能上传这几种后缀的文件

查看源代码发现不能用大小写

先尝试直接上传.png文件然后修改后缀为.php,发现不行,应该是过滤了,双写后缀为.pphphp后成功绕过,上传成功

ps:其他绕过方式也可以php2或者是phtml

Pass-04

搜了一下这个函数是黑名单,说明后面一串的后缀都是不允许的,下面那里提示转换为小写,说明不可以用大小写绕过,仔细检查过滤了哪些,发现.htaccess没在黑名单中,可以先上传.htaccess文件,后面再上传.jpg(看文件里是什么后缀)就可自动解析为php

上传一个.htaccess文件并抓包修改类型,再上传这个文件中对应的文件(这里指2.jpg)

上传成功

Pass-05

发现都过滤了,但是没有那个转换为小写了,说明能用大小写绕过

上传一个.png文件然后抓包更改后缀

上传成功

Pass-06

首先查看源代码,发现黑名单中的这些后缀以及大小写绕过都不可以使用,也不可以上传.htaccess文件,想到空格绕过

上传黑名单外的文件,抓包更改后缀并加上空格

上传成功

Pass-07

先查看源代码,发现禁用了很多后缀,: :$DATA不能用,大小写绕过也不可以,想尝试一下.绕过

上传后bp抓包修改后缀,在后面加上.

上传成功

Pass-08

查看源代码,发现与上一个比较多了.不能用,但是::$DATA可以用了

上传允许的后缀的文件,并抓包更改

上传成功

Pass-09

查看源代码,跟上一关一样,而且::$DATA不可以用了

这里发现跟前几关都不一样,之前都是ext,这里是name,所以就可以通过空格加点去绕过

上传后抓包并修改

上传成功

Pass-10

框起来的都是需要绕过的,黑名单里面的,还有不能用空格加点,大小写也不行

尝试双写绕过,抓包修改后缀

上传成功

Pass-11

白名单绕过,根据下面两行代码这里选择尝试%00截断

上传白名单允许的文件,抓包并修改,注意上传的木马文件是phpinfo的

上传成功

Pass-12

白名单绕过,POST类型的%00绕过

因为是POST传参,所以要进行decode编码

上传成功

Pass-13

要求传图片马,要检查2字节,直接上传即可(图片木马只用在图片最后加上一句话木马就可以了)

上传成功

Pass-14

只能上传图片马,而且不能太大

制作一个图片木马

上传成功

Pass-15

只能上传图片类型文件,并用函数exif_imagetype()检查(通过读取图像的第一个字节并检查其签名来确定图像的类型)还需要打开扩展

用小皮打开扩展,然后和上面一样上传图片木马就可以了

Pass-16

提示是二次渲染

就是把上传的图片,根据要求,只把图片中的图片信息提取出来,再生成一个新的图片,可以避免图片马。

二次渲染用到了imagecreatefromjpeg函数(由文件或 URL 创建一个新图象,返回一图像标识符,代表了从给定的文件名取得的图像(这时候图像对象还是一个空的)。然后判断是否是一个图片文件,如果不是的话执行unlink函数删除文件,否则,为新图片随机一个名称,执行imagejpeg函数把图象输出到新文件$newfilename。再将之前用户上传的文件$target_path删除掉。)

先制作一个gif的图片马

上传后将图片另存,接着用010打开进行对比

可以看到上传成功的图片中没有一句话木马了,被打乱了,另外发现绿色部分就是经过渲染的,可以在没有被渲染的部分添加一句话木马,也不能在头部,会破坏文件头导致无法上传

重新上传并抓包在前面未被渲染的部分添加一句话木马

再发包就可以了

Pass-17

这题打开后看见提示要代码审计

如果是jpg、png、gif中的一种,就将文件进行重命名。如果不符合的话,unlink()函数就会删除该文件

补充:

条件竞争漏洞:一种服务器端的漏洞,由于服务器在处理不同请求时时并发进行的,因此处理不当会或者相关操作顺序设计的不合理时,将导致漏洞产生。

所以文件是可以先上传的,然后再判断文件后缀名是否在白名单里,然后再删除,就可以上传1.php,只要在它被删除之前访问就行了,可以用bp的intruder模块不断上传,然后不断访问新地址即可

这样就可以了

Pass-18

这题依然是代码审计

跟上一题一样,还是条件竞争漏洞,但是是白名单,操作不变,也是用bp的intruder模块不断上传,然后不断访问新地址即可

这样就可以上传成功了

Pass-19

打开后对比发现比之前的题多了一个保存名称,没有对上传的文件做判断,只对用户输入的文件名做判断

先查看源码,发现这个函数,搜索其作用

在下面名称输入1.php/.就可以了

上传成功

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 书生大模型实战营--L1关卡-Llamaindex RAG实践
  • 正则采集器之三——前端搭建
  • C#插件 调用存储过程(输出参数类型)
  • Ubuntu开机自启配置(基于service:以ROS和docker为例)
  • 计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战
  • Zookeeper源码剖析-ZAB协议选举流程
  • Oracle核心进程详解并kill验证
  • js中map属性
  • vue2 前端实现pdf在线预览(无插件版)
  • “八股文”在程序员面试中的作用及其对实际工作的影响
  • Java整理14
  • C++ 沙漏图案(Hour-glass Pattern)
  • JavaScript_语法_运算符_一元运算符
  • Python面试题:结合Python技术,如何使用Alembic进行数据库迁移管理
  • Spring框架中依赖注入实现手段的选择(基于XML 或 基于注解)
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【个人向】《HTTP图解》阅后小结
  • 【刷算法】从上往下打印二叉树
  • 03Go 类型总结
  • Flex布局到底解决了什么问题
  • Java精华积累:初学者都应该搞懂的问题
  • JS 面试题总结
  • 近期前端发展计划
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • hi-nginx-1.3.4编译安装
  • 阿里云重庆大学大数据训练营落地分享
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ( 10 )MySQL中的外键
  • (1)常见O(n^2)排序算法解析
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (办公)springboot配置aop处理请求.
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (数据结构)顺序表的定义
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)事件系统
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转载)从 Java 代码到 Java 堆
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net 获取url的方法
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net6+aspose.words导出word并转pdf
  • .NET学习教程二——.net基础定义+VS常用设置
  • .Net中ListT 泛型转成DataTable、DataSet
  • :如何用SQL脚本保存存储过程返回的结果集
  • @vue/cli脚手架
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [20190113]四校联考
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [C/C++]数据结构 堆的详解
  • [C++]C++入门--引用