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

BUUCTF——Mark loves cat

BUUCTF——Mark loves cat

进入靶场

在这里插入图片描述

简单的看了一下功能点

扫一下目录吧

在这里插入图片描述

扫目录发现一个.git

下一下源码看看

在这里插入图片描述

找到个flag.php和index.php

在这里插入图片描述

<?php$flag = file_get_contents('/flag');

再看看index.php(代码有点长,所以只留了后面有用的)

<?phpinclude 'flag.php';$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);
}if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){exit($is);
}echo "the flag is: ".$flag;

根据代码这道题应该有几种解法

一个一个来吧

方法一、

foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}

先看第一个

$_GET['flag'] === $x:该条件检查$_GET['flag']的值是否和当前遍历到的参数名$x完全相等。===是严格相等比较运算符,它不仅会比较值,还会比较数据类型。

$x !== 'flag':此条件保证当前遍历到的参数名不是flag本身。

$x = 'flag'$y = 'name'时,$_GET['flag'] === $xfalse,因为$_GET['flag']的值是'name',而$x的值是'flag',所以不满足条件。

构造payload

?handsome=flag&flag=handsome

在这里插入图片描述

拿到flag

flag{43a901d4-8f66-43df-a525-9ce47464b283}

方法二、

if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);
}

这段代码的主要功能是检查当前的 HTTP 请求中是否包含名为 flag 的参数。如果 GET 请求和 POST 请求里都没有 flag 参数,就会输出 $yds 变量的值,然后终止当前代码的执行。

在这里插入图片描述

所以构造payload

?yds=flag

在这里插入图片描述

拿到flag

flag{43a901d4-8f66-43df-a525-9ce47464b283}

方法三、

if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){exit($is);
}

这段代码的主要功能是检查当前的 HTTP 请求中,flag 参数的值是否严格等于字符串 'flag'。如果满足这个条件,就会输出变量 $is 的值,并终止当前代码的执行。

构造payload

?is=flag&flag=flag

在这里插入图片描述

拿到flag

flag{43a901d4-8f66-43df-a525-9ce47464b283}

下播!!!

在这里插入图片描述

http://www.xdnf.cn/news/4023.html

相关文章:

  • 在Window10 和 Ubuntu 24.04LTS 上 Ollama 在线或离线安装部署
  • 嵌入式操作系统
  • 剥开 MP4 的 千层 “数字洋葱”:从外到内拆解通用媒体容器的核心
  • Vue3从入门到精通
  • GJOI 4.29 题解
  • 利用 Python pyttsx3实现文字转语音(TTS)
  • 9.进程控制(上)
  • linux 历史记录命令
  • Python爬虫(18)反爬攻防战:动态IP池构建与代理IP实战指南(突破95%反爬封禁率)
  • 全局过滤器与局部过滤器: Vue中的文本格式化工具
  • Python中的JSON库,详细介绍与代码示例
  • STC单片机与淘晶驰串口屏通讯例程之01【新建HDMI工程】
  • 计算机视觉与深度学习 | 图像匹配算法综述
  • Spring Boot 加载application.properties或application.yml配置文件的位置顺序。
  • Qwen3 性价比新王 Qwen3-30B-A3B 本地私有化部署,可灵活切换思考模式
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(九)
  • Qml组件之AnimatedImage
  • 牛客1018逆序数-归并排序
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化
  • 【PaaS与AI融合】MLOps平台的架构设计
  • DHCP服务器配置
  • PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡
  • HTTP协议
  • 如何判断node节点是否启用cgroup?
  • 深入浅出数据库规范化的三大范式
  • 网络传输中字节序
  • 线程局部存储----TLS
  • seaborn
  • suna工具调用可视化界面实现原理分析(二)
  • 黑马点评day02(缓存)