前言
涉及知识点:反序列化、代码执行、命令执行
题目来自:i春秋 hash 如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用
或者利用本文章提供的源码自主复现
[i春秋]“百度杯”CTF比赛 十月场-Hash
点击hahaha进入下一个页面
进入之后我们发现这有一段英文说如果不是123 我们就可以获得flag
我们分析URL key部分有个123 我们替换成122试试 试了之后不行我们看到hash的值一看就是md5密文直接拿去解密看看有什么发现
http://地址/index.php?key=123&hash=f9109d5f83921a551cf859f853afe7bb
md5解密那个hash=kkkkkk01123 根据直觉把后三位替换成和我们key一致的 替换后hash=kkkkkk01122 然后cmd5把hash的值加密 重新组合url提交
//修改key hash的 payload: http://地址/index.php?key=122&hash=e1ebb04a0a78afe23e2d542e72a25005
获得新的页面访问去。
访问获得这个页面的源码
1 <?php 2 class Demo { 3 private $file = 'Gu3ss_m3_h2h2.php'; 4 5 public function __construct($file) { 6 $this->file = $file; 7 } 8 9 function __destruct() { 10 echo @highlight_file($this->file, true); 11 } 12 13 function __wakeup() { 14 if ($this->file != 'Gu3ss_m3_h2h2.php') { 15 //the secret is in the f15g_1s_here.php 16 $this->file = 'Gu3ss_m3_h2h2.php'; 17 } 18 } 19 } 20 21 if (isset($_GET['var'])) { 22 $var = base64_decode($_GET['var']); 23 if (preg_match('/[oc]:\d+:/i', $var)) { 24 die('stop hacking!'); 25 } else { 26 27 @unserialize($var); 28 } 29 } else { 30 highlight_file("Gu3ss_m3_h2h2.php"); 31 } 32 ?>