“百度杯”CTF比赛 十月场--hash

本文详细介绍了在一场名为“百度杯”的CTF比赛中,如何利用正则表达式绕过和__wakeup()函数的特性来解码hash并获取目标文件。首先,通过构造特定的URL来绕过正则匹配,然后利用序列化漏洞,通过设置对象属性个数超过实际数量,避免执行__wakeup()。最终,通过可控的eval()函数读取到目标文件,从而完成挑战。参考了阿里云X-Team的安全研究和博客文章。
摘要由CSDN通过智能技术生成

知识点:

正则表达式绕过(+)

__wakeup()绕过方法

 

源代码提示:

 

hash解码得到sign=kkkkkk01

构造:

?key=111&hash=adaa10eef3a02754da03b5a3a6f40ae6

得到: Gu3ss_m3_h2h2.php

<?php

class Demo {

    private $file = 'Gu3ss_m3_h2h2.php';

    public function __construct($file) {

        $this->file = $file;

    }

    function __destruct() {

        echo @highlight_file($this->file, true);

    }

    function __wakeup() {

        if ($this->file != 'Gu3ss_m3_h2h2.php') {

            //the secret is in the f15g_1s_here.php

            $this->file = 'Gu3ss_m3_h2h2.php';

        }

    }

}

if (isset($_GET['var'])) {

    $var = base64_decode($_GET[&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值