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

【刷题13】CTFHub技能树-文件上传

文件上传

来源:CTFHub技能树

无验证

直接上传一句话木马,会显示路径,直接蚁剑连接找到flag。

image-20241109112713829

image-20241109112741306

前端验证

image-20241109112850962

查看源代码,发现进行了前端验证,必须是jpg,png或者gif文件。

直接抓包改包发送绕过

image-20241109113155795

image-20241109113230322

上传成功,直接蚁剑连接找flag就行。

.htaccess

知识:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

介绍:hatccess文件,.htaccess是Apache的又一特色。
● 一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件),
● 提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
● 作为用户,所能使用的命令受到限制。
● 简单来说,就是我上传了一个.htaccess文件到服务器,那么服务器之后就会将特定格式的文件以php格式解析。

所以先创建一个 .htaccess的文件,里面输入

<FilesMatch "pass777">
SetHandler application/x-httpd-php
</FilesMatch>

表示文件名中包含pass777的文件都会被当作php执行

所以再写一个一句话木马,文件名中包含pass777,上传后用蚁剑连接就能拿到flag

ctfhub{2428d2cef017f7d0e902eaac}

MIME绕过

直接将一句话木马后缀改成jpg,然后抓包修改成php,蚁剑连接就能拿到

ctfhub{c76881cacfd16db8afee74fd}

00截断

image-20241120203556473

根据前端提示,发现上传类型限制成了jpg,png,gif文件,并且如果文件类型被允许,构造目标路径($des),该路径由$_GET['road'](从URL的查询字符串中获取),一个随机数(10到99之间),当前日期和时间(格式为YmdHis),以及文件扩展名组成,并使用move_uploaded_file()函数将上传的文件从临时目录移动到目标目录($des

所以在路径处修改成.php的路径,然后用%00截断,让后面添加的目录失效

image-20241120204749984

由于我们修改了路径,所以保存路径就是原来的/upload/yjh-cmd.php

蚁剑连接challenge-a074b1b840a3ecbe.sandbox.ctfhub.com:10800/upload/123.php

ctfhub{e158c8b8eb6fdb23553ce830}

双写后缀
<!--
$name = basename($_FILES['file']['name']);
$blacklist = array("php", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf", "htaccess", "ini");
$name = str_ireplace($blacklist, "", $name);
-->

看提示发现过滤了一系列后缀,然后会把后缀替换成无,所以双写绕过,如:yjh.pphphp

ctfhub{a0a5473d07fac34189262488}

文件头检查

先随便上传一个文件,然后有提示

image-20241120211213870

那就抓包修改文件类型,同时在一句话木马前加上GIF89a,用来表示这是一个图片

image-20241120211402688

蚁剑连接得到flag

ctfhub{5602bccd8ab06a8c2408fb81}


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

相关文章:

  • @RequestBody、@Data、@Validated、@Pattern(regexp=“?“)(复习)
  • Vue2与Vue3:深入比较与迁移指南
  • 硬件知识 cadence16.6 原理图输出为pdf 网络名下划线偏移 (ORCAD)
  • [免费]SpringBoot+Vue毕业设计论文管理系统【论文+源码+SQL脚本】
  • Altenergy电力系统控制软件 status_zigbee SQL注入漏洞复现(CVE-2024-11305)
  • C++初阶(十三)--STL--vector的使用
  • vue2 全局指令调用组件
  • 06 —— Webpack优化—压缩过程
  • centos7.9单机版安装K8s
  • 微服务电商平台番外篇一:常用的docker命令
  • 【实操之 图像处理与百度api-python版本】
  • 蓝桥杯每日真题 - 第17天
  • django宠物服务管理系统
  • Oracle SQL*Plus中的SET VERIFY
  • CSS+JQuery 实现弹力球效果,碰到屏幕边框弹回
  • Node.js 安装与开发环境配置全指南
  • AI Large Language Model
  • SQLite Glob 子句
  • 攻防世界-web php_rce[wp]
  • django基于Python的农产品销售系统的设计与实现
  • 网络安全-------防止被抓包
  • 绕过CDN寻找真实IP
  • C++编程玩转物联网:用树莓派Pico点亮RGB彩灯世界
  • JavaEE专栏介绍
  • gitclone失败
  • vmWare虚拟环境centos7安装Hadoop 伪分布式实践