云曦月末断网考核复现

news2025/4/15 6:57:25

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://协议可以发送GETPOST请求,攻击内网的RedisMySQL等服务

绕过限制

当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

受害者的操作系统是什么

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

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

相关文章

Flutter常用组件实践

Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…

0.机器学习基础

0.人工智能概述&#xff1a; &#xff08;1&#xff09;必备三要素&#xff1a; 数据算法计算力 CPU、GPU、TPUGPU和CPU对比&#xff1a; GPU主要适合计算密集型任务&#xff1b;CPU主要适合I/O密集型任务&#xff1b; 【笔试问题】什么类型程序适合在GPU上运行&#xff1…

系统与网络安全------网络通信原理(4)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 网络层解析 IP 网络层概述 位于OSI模型第三层作用 定义网络设备的逻辑地址&#xff0c;俗称网络层地址&#xff08;如IP地址&#xff09; 在不同的网段之间选择最佳数据转发路径 协议 IP协议 IP数据包…

Java基础 4.12

1.方法的重载&#xff08;OverLoad&#xff09; 基本介绍 Java中允许同一个类&#xff0c;多个同名方法的存在&#xff0c;但要求形参列表不一致&#xff01; 如 System.out.println(); out是PrintStream类型 重载的好处 减轻了起名的麻烦减轻了记名的麻烦 2.重载的快速入…

XILINX DDR3专题---(1)IP核时钟框架介绍

1.什么是Reference Clock&#xff0c;这个时钟一定是200MHz吗&#xff1f; 2.为什么APP_DATA是128bit&#xff0c;怎么算出来的&#xff1f; 3.APP &#xff1a;MEM的比值一定是1:4吗&#xff1f; 4.NO BUFFER是什么意思&#xff1f; 5.什么情况下Reference Clock的时钟源可…

clickhouse注入手法总结

clickhouse 遇到一题clickhouse注入相关的&#xff0c;没有见过&#xff0c;于是来学习clickhouse的使用&#xff0c;并总结相关注入手法。 环境搭建 直接在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、涟漪点)

参考文档&#xff1a;链接: link_pyecharts 官方文档 1、map() 传入省份全称&#xff0c;date_pair 是列表套列表 [ [ ],[ ] … ] 2、geo() 传入省份简称&#xff0c;date_pair 是列表套元组 [ ( ),( ) … ] 1、准备数据 population_data&#xff1a;简称经纬度 population_da…

解决 Elasticsearch 分页查询性能瓶颈——从10分钟到秒级的优化实践

大家好&#xff0c;我是铭毅天下&#xff0c;一名专注于 Elasticsearch &#xff08;以下简称ES&#xff09;技术栈的技术爱好者。 今天我们来聊聊球友提出的一个实际问题&#xff1a; ES分页查询性能很差&#xff0c;使用from/size方式检索居然需要10分钟&#xff01; 这是一个…

记录IBM服务器检测到备份GPT损坏警告排查解决过程

服务器设备&#xff1a;IBM x3550 M4 Server IMM默认IP地址&#xff1a;192.168.70.125 用户名&#xff1a;USERID 密码&#xff1a;PASSW0RD&#xff08;注意是零0&#xff09; 操作系统&#xff1a;Windows Hyper-V Server 2016 IMM Web System Status Warning&#xff1…

毫米波测试套装速递!高效赋能5G/6G、新材料及智能超表面(RIS)研发

德思特&#xff08;Tesight&#xff09;作为全球领先的测试测量解决方案提供商&#xff0c;始终致力于为前沿技术研发提供高精度、高效率的测试工具。 针对毫米波技术在高频通信、智能超表面&#xff08;RIS&#xff09;、新材料等领域的快速应用需求&#xff0c;我们推出毫米…

Linux中卸载宝塔面板

输入命令 wget http://download.bt.cn/install/bt-uninstall.sh 执行脚本命令 sh bt-uninstall.sh 根据自己的情况选择1还是2 卸载完成校验 bt 这样我们的宝塔面板就卸载完了

无人机的振动与噪声控制技术!

一、振动控制技术要点 1. 振动源分析 气动振动&#xff1a;旋翼桨叶涡脱落&#xff08;如叶尖涡干涉&#xff09;、动态失速&#xff08;Dynamic Stall&#xff09;引发的周期性气动激振力&#xff08;频率与转速相关&#xff09;。 机械振动&#xff1a;电机偏心、传动轴不…

【蓝桥杯】第十六届蓝桥杯 JAVA B组记录

试题 A: 逃离高塔 很简单&#xff0c;签到题&#xff0c;但是需要注意精度&#xff0c;用int会有溢出风险 答案&#xff1a;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接口的网络类型&#xff08;工作方式&#xff09;计时器BMA&#xff08;以太网&#xff09;broadcast &#xff0c;需要DR/BDR的选举hello&#xff1a;10s…

python+requests接口自动化测试框架实例教程

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行…

2021第十二届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

记录刷题的过程、感悟、题解。 希望能帮到&#xff0c;那些与我一同前行的&#xff0c;来自远方的朋友&#x1f609; 大纲&#xff1a; 1、空间-&#xff08;题解&#xff09;-字节单位转换 2、卡片-&#xff08;题解&#xff09;-可以不用当组合来写&#xff0c;思维题 3、直…

智能资源管理机制-重传机制

一、发送端资源管理的核心机制 1. 滑动窗口&#xff08;Sliding Window&#xff09; 这是TCP协议的核心优化设计&#xff1a; 窗口动态滑动&#xff1a;发送端不需要保留所有已发送的分组&#xff0c;只需维护一个"发送窗口"窗口大小&#xff1a;由接收方通告的接…

设计模式 --- 原型模式

原型模式是创建型模式的一种&#xff0c;是在一个原型的基础上&#xff0c;建立一致的复制对象的方式。这个原型通常是我们在应用程序生命周期中需要创建多次的一个典型对象。为了避免初始化新对象潜在的性能开销&#xff0c;我们可以使用原型模式来建立一个非常类似于复印机的…

汽车软件开发常用的建模工具汇总

目录 往期推荐 1.Enterprise Architect&#xff08;EA&#xff09; 2.MATLAB/Simulink 3.TargetLink 4.Rational Rhapsody 5.AUTOSAR Builder 6.PREEvision 总结 往期推荐 2025汽车行业新宠&#xff1a;欧企都在用的工具软件ETAS工具链自动化实战指南&#xff1c;一&am…