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

[GHCTF 2025]ez_readfile

题目: 

<?php
  show_source(__FILE__);
  if (md5($_POST['a']) === md5($_POST['b'])) {
      if ($_POST['a'] != $_POST['b']) {
          if (is_string($_POST['a']) && is_string($_POST['b'])) {
              echo file_get_contents($_GET['file']);
          }
      }
  }
?>
Warning: md5() expects parameter 1 to be string, array given in /var/www/html/index.php on line 3

Warning: md5() expects parameter 1 to be string, array given in /var/www/html/index.php on line 3

看起来挺简单,网上搜了个md5绕过就绕成功了,但是我始终找不到flag在哪里

 最后实在受不了看了wp,我只能说给我八百年我也找不到

方法一:读取敏感文件 docker-entrypoint.sh

同样的敏感文件还有 docker-compose.yml

有出过题的,大部分都是采用https://github.com/CTF-Archives/ctf-docker-template这里面的模版。一般出题过程中,为了方便,不去修改dockerfile文件,都会直接在容器内修改,然后再commit生成镜像。

里面的php出题模版中,有一个容器启动命令文件docker-entrypoint.sh。

可以看到该命令文件在容器初始化后就会被删掉。但是在提交生成镜像后,由镜像生成容器又需要运行该文件。因此有的出题者为了方便可能就不删除该文件,这时候就可以碰碰运气,看看出题者有没有把这个文件删掉。没有删掉,就能够获取路径。

这个文件在 

[GHCTF 2025]GetShell -CSDN博客 也遇到过

什么是 docker-entrypoint.sh : Docker 容器中常见的入口脚本,通常用于在容器启动时执行一些初始化任务,比如配置环境变量(检查或设置必要的环境变量(如数据库连接配置))、设置权限、启动服务等等

可以读取到

#!/bin/bash

# Check the environment variables for the flag and assign to INSERT_FLAG
if [ "$DASFLAG" ]; then
    INSERT_FLAG="$DASFLAG"
elif [ "$FLAG" ]; then
    INSERT_FLAG="$FLAG"
elif [ "$GZCTF_FLAG" ]; then
    INSERT_FLAG="$GZCTF_FLAG"
else
    INSERT_FLAG="flag{TEST_Dynamic_FLAG}"
fi

# 将FLAG写入文件 请根据需要修改
echo $INSERT_FLAG > /f1wlxekj1lwjek1lkejzs1lwje1lwesjk1wldejlk1wcejl1kwjelk1wjcle1jklwecj1lkwcjel1kwjel1cwjl1jwlkew1jclkej1wlkcj1lkwej1lkcwjellag

#这里的echo是标准重定向输出(一般是电脑屏幕),但是很明显这里是重定向输出到
#/f1wlxekj1lwjek1lkejzs1lwje1lwesjk1wldejlk1wcejl1kwjelk1wjcle1jklwecj1lkwcjel1kwjel1cwjl1jwlkew1jclkej1wlkcj1lkwej1lkcwjellag文件中


source /etc/apache2/envvars

echo "Running..." &

tail -F /var/log/apache2/* &

#启动服务器
exec apache2 -D FOREGROUND

 然后再访问这个文件就能拿到flag

方法二:利用CVE-2024-2961实现从将php://filter任意文件读取提升为远程代码执行(RCE)

攻防世界 file_include【php://filter详解】-CSDN博客

参考:

GHCTF-WEB-EZ ReadFile 详解(内含XXE条件下敏感信息的获取思路&失败的CVE-2024-2961脚本漏洞利用) -CSDN博客

2025GHCTF Official Write Up for Web | hey's blog


http://www.kler.cn/a/601174.html

相关文章:

  • LabVIEW 与 PLC 通讯的常见方式
  • 分级反爬虫是什么?JAVA实现反爬虫策略
  • K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志
  • uniapp中$emit的使用方法
  • RWEQ 模型深度讲解:结合 Python、ArcGIS 等实现土壤风蚀归因分析
  • GitHub和Gitee上的一些AI项目
  • Zbrush插件安装
  • HarmonyOS NEXT 实现拖动卡片背景模糊效果
  • 独立组网和非独立组网
  • Linux 多线程-生产消费者模型线程池线程单例模式其他
  • 力扣刷题39. 组合总和
  • github怎么关闭issue禁止评论设置步骤
  • [ChatGPT 高级进阶系列] 用ChatGPT加速前端开发:高级思维链提示全解析
  • 【漫话机器学习系列】161.验证曲线(Validation Curve)
  • 括号合法题
  • 在CentOS系统上运行Ruby on Rails应用的详细步骤
  • 借助可视化,快速洞察数据背后的商机
  • 游戏如何检测GG修改器
  • 英伟达「虚拟轨道+AI调度」专利:开启自动驾驶3.0时代的隐形革命
  • 表单查询、多表查询