当前位置: 首页 > news >正文

翻斗幼儿园历险记-CTF-WP

翻斗幼儿园历险记

一、搭建:

docker-compose up -d 运行那个docker-compose.yml文件即可

image-20250327203752856

打开127.0.0.1:32777就运行好了

image-20250327204004316

2、打法

文件上传

image-20250327204028885

前端过滤,bp抓包改后缀即可

image-20250327204331766

image-20250327204744824

盲猜一波,上传的目录是/uploads下面

哥斯拉连上马后,发现没有权限

image-20250327205105208

提权看看

查找具有root权限的命令

find / -perm -u=s -type f 2>/dev/null

image-20250327205302057

发现find具有这个权限,就可以用find命令提权

find / -exec /bin/bash -p \;

提权后,发现nmd是个假flag

image-20250327212008847

这会大概猜到了是个内网题,frp搭个隧道看看

image-20250327212234408

启动下vps的服务端

image-20250327212522964

客户端给frpc权限

image-20250327213455651

客户端运行frp

image-20250327213040544

查一下ip

image-20250327213310901

配个代理就可以访问内网了

image-20250327213650259

router scan扫一下内网其他机器

image-20250327213710129

记得routescan配置代理

image-20250327213818071

扫到存活的机器了

image-20250327214014571

进去看一下

注册个号

image-20250327214115848

要我算一万次不可能

image-20250327214137804

看源码

image-20250327214204129

image-20250327214412747

image-20250327214440343

在admin.php里面

image-20250327214452851

艹了,要admin权限

访问一下

image-20250328134656303

但给的源码中有redis的文件,看下能不能redis未授权

内网题,得用proxychains设置我的vps代理打redis

给kali安装代理proxychains

sudo apt install proxychains

配置代理

sudo vim /etc/proxychains.conf

image-20250328132929192

给一个命令实现代理,只要在这个命令前面加上proxychains这个命令就好

proxychains redis-cli -h 172.11.0.3 -p 6379

成功连上内网的redis

image-20250328133402648

看见我的角色只是个noBody

image-20250328133446923

想办法把我的role角色写成admin

image-20250328133751184

set user:test eyJwYXNzd29yZCI6InRlc3QiLCJyb2xlIjoiYWRtaW4ifQ==

image-20250328133916574

这会拿test账号密码admin登录

image-20250328134739626

再访问admin.php

image-20250328134754794

这题考的就是个word文档上传

其实word文档本质上就是个压缩包,你用bandzizip都可以把它解压成几个文件

image-20250328135854456

审计一下admin.php

<?php
require_once 'common.php';
$user = getCurrentUser();#调用 getCurrentUser() 函数,获取当前用户的信息
if (!$user || $user['role'] !== 'admin') {header('HTTP/1.1 403 Forbidden');die('<h1 class="text-light">403 Forbidden - 权限不足</h1>');
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {define('REL_FILENAME', 'word/_rels/document.xml.rels');#定义一个常量 REL_FILENAME,其值为 'word/_rels/document.xml.rels'。这是 Word 文档中存储文档关系(如图片引用关系)的文件路径。function hellYeah($code, $msg): void{http_response_code($code);die("<div class='neu-card'><div class='alert alert-danger'>$msg</div></div>");}if (!isset($_FILES['input'])) hellYeah(400, '请选择要上传的文件');if ($_FILES['input']['error'] !== UPLOAD_ERR_OK) hellYeah(500, '文件上传错误');if ($_FILES['input']['type'] != 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')#查文件类型是否为 .docx(通过 MIME 类型检查)。hellYeah(400, '请上传Word文档 (.docx)');$zip = new ZipArchive();#创建一个 ZipArchive 对象,用于处理 .docx 文件(因为 .docx 文件本质上是一个 ZIP 包)。$zipFilename = $_FILES['input']['tmp_name'];#获取临时文件名if ($zip->open($zipFilename) !== true || $zip->locateName(REL_FILENAME) === false)hellYeah(400, '无效的Word文档格式');#检查是否包含 word/_rels/document.xml.rels 文件,以验证是否为有效的 Word 文档$relsDom = simplexml_load_string($zip->getFromName(REL_FILENAME));#使用 simplexml_load_string 函数解析 document.xml.rels 文件的内容。if ($relsDom === false) hellYeah(400, '文档关系表解析失败');$tmpDir = exec("mktemp -d --tmpdir=/tmp");#使用 mktemp 命令创建一个临时目录(存储提取的图片)shell_exec("unzip $zipFilename \"word/media*\" -d \"$tmpDir\"");#使用 unzip 命令从 .docx 文件中提取 word/media 目录下的所有图片文件到临时目录function cleanup($tmpDir): void{shell_exec("rm -rf $tmpDir");}register_shutdown_function('cleanup', $tmpDir);@chdir("$tmpDir/word/media");#将当前工作目录切换到 word/media。ini_set('open_basedir', '.');#设置 open_basedir 限制,确保只能访问当前目录。$messages = [];foreach($relsDom->Relationship as $rel) {#遍历 document.xml.rels 文件中的 <Relationship> 元素。if($rel['Type'] == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image') {if (!str_starts_with($rel['Target'], 'media/'))#如果目标路径以 media/ 开头,提取文件名并读取文件内容。continue;$filename = substr($rel['Target'], 6);$file = @file_get_contents($filename);if ($file === false)break;if ($result = @base64_encode($file))$messages[] = $result;}}system("rm -rf $tmpDir");
}

这个的思路就是直接创建个docx文档,然后用bandizip解压

image-20250328164043231

接着把documengt.xml.rels文件改了,用php伪协议读文件

image-20250328164106398

image-20250328164143530

然后,再创建个软链接mdia指向根目录

image-20250328164310594

接着把所有文件打包成zip

image-20250328164335249

再把这个zip文件改为docx文档,上传即可

image-20250328164402994

总体思路就是,利用软链接把工作目录media目录指向根目录,因为题目会提取documengt.xml.rels文件里面的图片至media,还会解析,所以documengt.xml.rels文件里的图片改为php伪协议来读取flag

http://www.sczhlp.com/news/138553/

相关文章:

  • .net8+winform+Antdui 制作 LOL 小助手
  • 深入解析:【Git】Git 简介及基本操作
  • hutool主要内容list
  • 网站需求分析网站建设所有网页游戏网址
  • 佛山网站设计专业代理二级分销系统
  • 企业还做网站吗政务门户网站建设思想
  • 网站 空间费用杭州公司注册地址最新要求
  • 铁路建设监理网站最新新闻热点事件2023小学生
  • 网站建设哪家有网站建设推荐北京华网天下
  • 长沙麓谷网站建设制作动画的网站模板
  • 关于重新建设网站的申请造价员证在哪个网站上查询
  • 20250916_QQ_Powershell
  • 完整教程:HTTP安全响应头--CSP(Content-Security-Policy)
  • 我需要做网站wordpress 无法修改
  • 网上做网站钱被骗了报案有用吗wordpress编辑模板
  • 临海建设局网站商城网站合同
  • 网站 制作登录湖南长沙网页制作公司
  • 企业建设网站目的是什么意思十大聊天软件排行榜
  • 谷歌wordpress建站google引擎入口
  • 如何进行网站维护长沙百度文化传播有限公司
  • 专门做盗文网站的公司平陆网站建设
  • 网站google排名出现过几分钟网站设计就业压力
  • Experiment1
  • 读书笔记:Oracle 自动索引:让数据库自己管索引?
  • 佛山新网站建设公司wordpress下拉
  • 电子商务网站创建方案崇明网站开发
  • 电子商务网站的优势创意设计素材
  • 天津市城乡建设部网站首页网站如何做触屏滑动效果
  • 设计网站注意哪些问题局域网怎么建立
  • 网站首页关键词如何优化wordpress的意思