Writeup
Wrtieup
复现
Misc
哈基游
题目源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?php $func_template = 'function check($file_hash, %s) { if ($file_hash !== "5baf19ce6561538119dfe32d561d6ab8509703606f768fea72723a01ee4264b7") { echo "%s not cached"; } }'; $cached_key = isset($_GET['c']) ? $_GET['c'] : '$f_0'; if (!preg_match('/^[a-zA-Z0-9_\$]{1,5}$/', $cached_key)) { die('Invalid cached key'); } $func = sprintf($func_template, $cached_key, $cached_key); eval($func); if (isset($_GET['h']) && isset($_GET['algo']) && isset($_GET['file'])) { $file_hash = hash_file($_GET['algo'], $_GET['file']); check($file_hash, $_GET['file']); } else { phpinfo(); } ?>
|
对于参数c传入int$c,就会产生报错,我们就能从报错中看到文件哈希后的结果。
从phpinfo中我们可以看到可用的哈希算法

由于crc不是一种安全的算法,只要给出足够多不同的crc就有可能恢复出被加密的内容,而这里有三种可用的crc



官方给的脚本不知道为什么跑不出来(
下面是一个密码爷的做法,只能膜拜Orz
