[羊城杯 2020]Blackcat
我们打开源码页面,它提示听听歌
我们猜测mp3文件里有东西
下载Hei_Mao_Jing_Chang.mp3文件,使用命令
1 | strings Hei_Mao_Jing_Chang.mp3查看文件 |
在文末看到一段PHP代码
1 | if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){ |
分析代码:
首先要使用POST方式提交参数Black-Cat-Sheriff和One-ear;
getenv()函数定义:取得系统的环境变量;
使用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
1 | payload: |
post提交得到flag