云曦月末断网考核复现
Web
先看一个BUUCTF中的文件一个上传题
[BUUCTF] 2020新生赛 Upload
打开后是一个文件上传页面

随便上传一个txt一句话木马后出现js弹窗,提示只能上传图片格式文件

说明有前端验证。我的做法是把一句话改为.jpg格式,
然后上传

访问发现虽然上传成功了,但无法解析

当然图片麻烦也无法进行解析,上传无效
然后尝试抓包上传绕过js前端验证后修改后缀名

然后修改数据包

改后缀 (因为是黑盒测试,不知道过滤源码,只能一个个尝试修改了各种后缀,(php1、php2、php3、php4、php5、phps、pht、phtm)但都上传失败,直到最后发现phtml后缀才可以上传成功的同时能被解析)

然后放行,上传成功得到路径

新建网页,把原环境url与得到的图片路径拼接访问,发现是空白页

这里还记得一句话木马上传的参数不? 我的是a
用post传参php语句,验证是否可执行php语句 上传后发现能解析

接下来就可以蚁剑连接
连接成功后添加


进入目录文件找到flag


其实云曦月末考核的文件上传和这题就是一样的(好后悔假期的时候以为这题简单没做。。)
ez_upload
启动靶机后任然只允许上传图片文件

那就改木马后缀名来绕过前端验证(制作图片马也可以)然后抓包上传

修改数据包

放行后上传成功,得到文件路径

同样的,拼接url访问成功得到空白页面

验证是否可执行php语句
发现能解析

那就可以连蚁剑
连接成功后添加数据

最后打开目录搜寻flag即可


ez_ssrf
看题目这题需要先了解ssrf
SSRF(服务器端请求伪造)漏洞解析
定义
SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种安全漏洞,攻击者通过精心构造的请求,诱使服务器端发起对指定目标的网络请求。这种漏洞通常用于访问从外网无法直接访问的内部系统
原理
SSRF漏洞的形成原因主要是服务端提供了从其他服务器获取数据的功能,但没有对目标地址、协议等进行严格的过滤和限制。例如,应用可能允许用户输入URL来获取内容,但未对输入进行验证,导致攻击者可以构造恶意URL,使服务器访问内网或外部的任意资源
攻击方式
内网攻击:攻击者可以利用SSRF漏洞访问内网资源,如数据库、内部服务等
端口扫描:通过向不同端口发送请求,判断端口是否开放
文件读取:利用file://协议读取服务器本地文件
其他协议利用:如gopher://、dict://等协议,可用于执行特定的攻击
例如
假设一个应用允许用户输入URL来加载内容,但未对输入进行验证。攻击者可以构造如下URL:
http://example.com/load?url=http://192.168.1.100:6379/
这可能导致服务器访问内网的Redis服务(就是一个开源的数据库),从而引发一些安全问题,当然,这也意味着在ctf中可以利用它获取flag(攻击内网系统、读取敏感文件、执行恶意操作)
ssrf的常见利用方式
内网端口扫描和主机存活探测
利用SSRF漏洞,攻击者可以扫描内网的开放端口,探测内网主机的存活情况。例如,通过构造http://192.168.1.1:80等请求,检查内网主机的80端口是否开放(其实和上面说的差不多)
攻击内网应用
利用file://协议,攻击者可以读取服务器本地文件。例如,通过构造file:///etc/passwd等请求,读取服务器的/etc/passwd文件(也和上面说的一样)
利用伪协议进行攻击
SSRF漏洞可以结合多种伪协议进行攻击,如gopher://、dict://等。例如,gopher://协议可以发送GET或POST请求,攻击内网的Redis、MySQL等服务
绕过限制
当SSRF漏洞存在限制时,攻击者可以利用多种绕过技巧,如短网址、进制转换、DNS解析等。例如,通过http://127.0.0.1的十进制形式http://2130706433或十六进制形式http://0x7F000001绕过IP限制
接下来看这题
源码
<?php
highlight_file(__FILE__);//flag在/flag路由中if (isset($_GET['url'])){$url = $_GET['url'];if (strpos($url, 'http://127.0.0.1') !== 0){echo json_encode(["error" => "Only http://127.0.0.1 URLs are allowed"]);exit;}$host = parse_url($url, PHP_URL_HOST);$ip = gethostbyname($host);$forbidden_ips = ['127.0.0.1', '::1'];if (in_array($ip, $forbidden_ips)){echo json_encode(["error" => "Access to localhost or 127.0.0.1 is forbidden"]);exit;}$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_USERAGENT, 'curl/7.68.0');$response = curl_exec($ch);if (curl_errno($ch)){echo json_encode(["error" => curl_error($ch)]);} else {echo $response;}curl_close($ch);
} else {echo json_encode(["error" => "Please provide a 'url' parameter"]);
}
?>
{"error":"Please provide a 'url' parameter"}
进行代码审计
前面的引入高亮函数啥的就不用说了
算了再记一下也没什么不好的
highlight_file(__FILE__); 会显示当前脚本的源代码,并对其进行语法高亮。这通常用于调试,方便查看代码结构
然后检查是否有get参数传入
if (isset($_GET['url'])){$url = $_GET['url'];
if (strpos($url, 'http://127.0.0.1') !== 0){echo json_encode(["error" => "Only http://127.0.0.1 URLs are allowed"]);exit;}
strops()是一个在PHP中用于查找字符串中字符或子字符串第一次出现位置的函数
即验证URL必须以http://127.0.0.1开头,否则报错
$host = parse_url($url, PHP_URL_HOST);$ip = gethostbyname($host);
解析URL的主机名并获取其IP地址
$forbidden_ips = ['127.0.0.1', '::1'];if (in_array($ip, $forbidden_ips)){echo json_encode(["error" => "Access to localhost or 127.0.0.1 is forbidden"]);exit;}
设置了一个黑名单用于禁止访问127.0.0.1和::1(本地回环地址)
分析下来就可以利用URL的解析差异来绕过(特殊构造的URL可能被parse_url和gethostbyname解析不一致)
比如这里利用0.0.0.0或localhost别名(localhost可以解析为127.0.0.1或::1(IPv6),但这个被过滤了绕不过。)
利用0.0.0.0:
因为某些系统配置中0.0.0.0等同于127.0.0.1,
-
在服务器监听时:表示监听所有可用的网络接口
-
在客户端连接时:通常会被解析为127.0.0.1(回环地址)
-
在某些系统上:直接访问0.0.0.0会被重定向到localhost
如果我构造一个url参数值由三部分组成来绕过:
http://127.0.0.1(用于满足开头的检查)
:80@ (相当于“密码”的占位符)
0.0.0.0 (实际连接的主机)
既然是为了flag而来那就应该是cat flag,所以加/flag
所以总的url参数值就是
http://127.0.0.1:80@0.0.0.0/flag
访问得到flag

至于为什么要这么构造:
http://127.0.0.1是为了满足strpos()的检查,规定url参数必须以这个开头
重点是:80@ 因为基本的URL结构就需要“ 密码”
一个包含认证信息的URL标准格式是
http://username:password@hostname/path
而这题根据需要给它构造成这样
http://127.0.0.1:80@0.0.0.0/flag
也就是
-
127.0.0.1被解析为"用户名" -
80被解析为"密码" -
0.0.0.0才是真正的主机 -
/flag 是路径
:80@ 其实就是为了改变了URL的实际含义,也为了影响parse_url解析
gethostbyname() 会解析 host 部分(即0.0.0.0),实际请求时cURL会连接到0.0.0.0,而系统通常会将0.0.0.0视为localhost
80是HTTP默认端口,增加可信度 。作为"密码"部分,它只是占位符,实际值不重要,其实也可以换成其他端口号,比如换为88

99

但80最不容易引起怀疑,还是用80的好一点
别的也不用多解释,因为 user:pass@host 是标准URL格式
但做的时候发现冒号打多了一个也没有影响

Misc
流量分析1
就第一个题有附件,后面的通用
下载后选择打开方式

010打开发现文件头是PK,典型的压缩包格式,所以先改一下后缀
全部解压缩后得到流量包

打开后进入winshark

这次要记住后缀为pcpng就是流量包了
这也是最近才了解到,比如前两天云大的Cloudever比赛就遇到

回到这里记得题目是获取抓取流量包所需要的秒数

进入统计>>捕获文件属性

可以看到经过的时间

但要注意题目要求的是秒数,转换一下就可以了

流量分析2
第二题要求的是找计算机抓取流量包时操作系统的build版本

这不就在刚刚的位置吗

题目要求flag格式为10D32,所以应该就是23F79,用Yunxi{}包裹即可
流量分析3
同样先看题目要求

要IP地址,打开协议分级,就会发现两个IP

查看http协议后有两个ip
192.168.75.131
192.168.75.132

试了以后发现131是正确的
流量分析4
受害者的操作系统是什么

相关文章:
云曦月末断网考核复现
Web 先看一个BUUCTF中的文件一个上传题 [BUUCTF] 2020新生赛 Upload 打开后是一个文件上传页面 随便上传一个txt一句话木马后出现js弹窗,提示只能上传图片格式文件 说明有前端验证。我的做法是把一句话改为.jpg格式, 然后上传 访问发现虽然上传成功了…...
Flutter常用组件实践
Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…...
MySQL MVCC 机制详解
MySQL MVCC 机制详解 1. MVCC 基本概念 MVCC 是一种并发控制的方法,主要用于数据库管理系统,允许多个事务同时读取数据库中的同一个数据项,而不需要加锁,从而提高了数据库的并发性能。 ┌──────────────────…...
【面试】封装、继承、多态的具象示例 模板编程的理解与应用场景 链表适用的场景
文章目录 C面试:封装、继承、多态的具象示例1. 封装 (Encapsulation)2. 继承 (Inheritance)3. 多态 (Polymorphism)综合示例:封装、继承、多态 C模板编程的理解与应用场景我对模板编程的理解C中最常用的模板编程场景1. STL (标准模板库)2. 通用容器实现3…...
0.机器学习基础
0.人工智能概述: (1)必备三要素: 数据算法计算力 CPU、GPU、TPUGPU和CPU对比: GPU主要适合计算密集型任务;CPU主要适合I/O密集型任务; 【笔试问题】什么类型程序适合在GPU上运行࿱…...
系统与网络安全------网络通信原理(4)
资料整理于网络资料、书本资料、AI,仅供个人学习参考。 网络层解析 IP 网络层概述 位于OSI模型第三层作用 定义网络设备的逻辑地址,俗称网络层地址(如IP地址) 在不同的网段之间选择最佳数据转发路径 协议 IP协议 IP数据包…...
Java基础 4.12
1.方法的重载(OverLoad) 基本介绍 Java中允许同一个类,多个同名方法的存在,但要求形参列表不一致! 如 System.out.println(); out是PrintStream类型 重载的好处 减轻了起名的麻烦减轻了记名的麻烦 2.重载的快速入…...
XILINX DDR3专题---(1)IP核时钟框架介绍
1.什么是Reference Clock,这个时钟一定是200MHz吗? 2.为什么APP_DATA是128bit,怎么算出来的? 3.APP :MEM的比值一定是1:4吗? 4.NO BUFFER是什么意思? 5.什么情况下Reference Clock的时钟源可…...
clickhouse注入手法总结
clickhouse 遇到一题clickhouse注入相关的,没有见过,于是来学习clickhouse的使用,并总结相关注入手法。 环境搭建 直接在docker运行 docker pull clickhouse/clickhouse-server docker run -d --name some-clickhouse-server --ulimit n…...
React 组件样式
在这里插入图片描述 分为行内和css文件控制 行内 通过CSS中类名文件控制...
利用 pyecharts 实现地图的数据可视化——第七次人口普查数据的2d、3d展示(关键词:2d 、3d 、map、 geo、涟漪点)
参考文档:链接: link_pyecharts 官方文档 1、map() 传入省份全称,date_pair 是列表套列表 [ [ ],[ ] … ] 2、geo() 传入省份简称,date_pair 是列表套元组 [ ( ),( ) … ] 1、准备数据 population_data:简称经纬度 population_da…...
解决 Elasticsearch 分页查询性能瓶颈——从10分钟到秒级的优化实践
大家好,我是铭毅天下,一名专注于 Elasticsearch (以下简称ES)技术栈的技术爱好者。 今天我们来聊聊球友提出的一个实际问题: ES分页查询性能很差,使用from/size方式检索居然需要10分钟! 这是一个…...
记录IBM服务器检测到备份GPT损坏警告排查解决过程
服务器设备:IBM x3550 M4 Server IMM默认IP地址:192.168.70.125 用户名:USERID 密码:PASSW0RD(注意是零0) 操作系统:Windows Hyper-V Server 2016 IMM Web System Status Warning࿱…...
毫米波测试套装速递!高效赋能5G/6G、新材料及智能超表面(RIS)研发
德思特(Tesight)作为全球领先的测试测量解决方案提供商,始终致力于为前沿技术研发提供高精度、高效率的测试工具。 针对毫米波技术在高频通信、智能超表面(RIS)、新材料等领域的快速应用需求,我们推出毫米…...
Linux中卸载宝塔面板
输入命令 wget http://download.bt.cn/install/bt-uninstall.sh 执行脚本命令 sh bt-uninstall.sh 根据自己的情况选择1还是2 卸载完成校验 bt 这样我们的宝塔面板就卸载完了...
无人机的振动与噪声控制技术!
一、振动控制技术要点 1. 振动源分析 气动振动:旋翼桨叶涡脱落(如叶尖涡干涉)、动态失速(Dynamic Stall)引发的周期性气动激振力(频率与转速相关)。 机械振动:电机偏心、传动轴不…...
Linux(CentOS10) gcc编译
本例子摘自《鸟哥的linux私房菜-基础学习第四版》 21.3 用make进行宏编译 书中的代码在本机器(版本见下)编译出错,改正代码后发布此文章: #kernel version: rootlocalhost:~/testmake# uname -a Linux localhost 6.12.0-65.el10.x86_64 #1…...
【蓝桥杯】第十六届蓝桥杯 JAVA B组记录
试题 A: 逃离高塔 很简单,签到题,但是需要注意精度,用int会有溢出风险 答案:202 package lanqiao.t1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrit…...
OSPF的接口网络类型【复习篇】
OSPF在不同网络环境下默认的不同工作方式 [a3]display ospf interface g 0/0/0 # 查看ospf接口的网络类型网络类型OSPF接口的网络类型(工作方式)计时器BMA(以太网)broadcast ,需要DR/BDR的选举hello:10s…...
微信小程序运行机制详解
微信小程序运行机制详解 微信小程序是介于 Web 和原生 App 之间的一种应用形态,具有无需安装、用完即走、体验流畅的特点。本文将从架构层面、运行环境、通信机制等方面深入剖析微信小程序的运行机制。 一、小程序运行架构概览 微信小程序采用双线程模型ÿ…...
python+requests接口自动化测试框架实例教程
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行…...
2021第十二届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、空间-(题解)-字节单位转换 2、卡片-(题解)-可以不用当组合来写,思维题 3、直…...
spark课后总结
Spark运行架构 : 运行架构 Spark 采用master - slave(主从)结构。Driver 相当于master,负责管理集群中的作业任务调度;Executor 相当于slave,负责实际执行任务 核心组件 Driver:是Spark驱动…...
智能资源管理机制-重传机制
一、发送端资源管理的核心机制 1. 滑动窗口(Sliding Window) 这是TCP协议的核心优化设计: 窗口动态滑动:发送端不需要保留所有已发送的分组,只需维护一个"发送窗口"窗口大小:由接收方通告的接…...
设计模式 --- 原型模式
原型模式是创建型模式的一种,是在一个原型的基础上,建立一致的复制对象的方式。这个原型通常是我们在应用程序生命周期中需要创建多次的一个典型对象。为了避免初始化新对象潜在的性能开销,我们可以使用原型模式来建立一个非常类似于复印机的…...
基于SiamFC的红外目标跟踪
基于SiamFC的红外目标跟踪 1,背景与原理2,SiamFC跟踪方法概述2.1 核心思想2.2 算法优势3,基于SiamFC的红外跟踪代码详解3.1 网络定义与交叉相关模块3.2 SiamFC 跟踪器实现3.3 主程序:利用 OpenCV 实现视频跟踪4,总结与展望在红外监控、无人机防御以及低光照场景中,红外图…...
多模态学习分析(MLA)驱动高中差异化教学策略研究
一、引言 1.1 研究背景 在当今时代,教育数字化转型的浪潮正席卷全球,深刻地改变着教育的面貌。这一转型不仅是技术的革新,更是教育理念、教学模式和教育管理的全面变革。随着互联网、大数据、人工智能等现代信息技术在教育领域的广泛应用&a…...
设计模式 - 单例
单例设计模式 单例设计模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。 在 JavaScript 里,有多种实现单例设计模式的方式,下面为你详细介绍: 1. 简单对象字面量实现 这是…...
汽车软件开发常用的建模工具汇总
目录 往期推荐 1.Enterprise Architect(EA) 2.MATLAB/Simulink 3.TargetLink 4.Rational Rhapsody 5.AUTOSAR Builder 6.PREEvision 总结 往期推荐 2025汽车行业新宠:欧企都在用的工具软件ETAS工具链自动化实战指南<一&am…...
SSM废品买卖回收管理系统的设计与实现
🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 07…...
