[羊城杯2020]Blackcat
源码看看:发现他要我们听听歌,发现可以下载,直接编辑一下发现:
1 | if(empty($_POST['Black-Cat-Sheriff']) || empty($_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)
当传入的$data为数组时,加密得到的结果固定为NULL;那么第二次的hash_hmac就是可控的.
预测hh的值,将其赋值给Black-Cat-Sheriff
payload(flag在环境变量里):
1 | White-cat-monitor[]=0&Black-Cat-Sheriff=afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b&One-ear=;env |
参考链接:https://blog.csdn.net/qq_46263951/article/details/119796671