BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

 

 图片是孙笑川?

无所谓了,可以发现页面隔几秒刷新一次,页面会打印当前时间

(还有一个date函数的警告,但在无所谓了)

抓个包:

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

 

 post传参

一共传了两个函数func和p

由于前面有func报错,可以猜到这里func是函数,p是参数

估计用的是call_user_func(func,p)

测试,确实是

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

 

 


 

 

这里说一下call_user_func()这个函数

这个函数接收多个参数call_user_func(a,b,c...)

其中a是被调用的函数(自定义函数也可),而b是a的参数

但是call_user_func这个函数不是所有都能调用的,

一些语言结构不能调用,例如:,echo(),empty(),eval(),exit(),isset(),list(),print(),unset()之类的

 


 

 

尝试传入 func=system p=ls

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

 

 提示hacker,被拦截,估计有黑名单

 


 

 

这里传入file_get_contents(index.php)

   <?php
    $disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","phpinfo","popen","dl","eval","proc_terminate","touch","escapeshellcmd","escapeshellarg","assert","substr_replace","call_user_func_array","call_user_func","array_filter", "array_walk",  "array_map","registregister_shutdown_function","register_tick_function","filter_var", "filter_var_array", "uasort", "uksort", "array_reduce","array_walk", "array_walk_recursive","pcntl_exec","fopen","fwrite","file_put_contents");
    function gettime($func, $p) {
        $result = call_user_func($func, $p);
        $a= gettype($result);
        if ($a == "string") {
            return $result;
        } else {return "";}
    }
    class Test {
        var $p = "Y-m-d h:i:s a";
        var $func = "date";
        function __destruct() {
            if ($this->func != "") {
                echo gettime($this->func, $this->p);
            }
        }
    }
    $func = $_REQUEST["func"];
    $p = $_REQUEST["p"];

    if ($func != null) {
        $func = strtolower($func);
        if (!in_array($func,$disable_fun)) {
            echo gettime($func, $p);
        }else {
            die("Hacker...");
        }
    }
    ?>

简单的代码审计,黑名单过滤了一大堆函数

看代码,发现有个Test类没使用

看类里面有个析构函数,调用了call_user_func函数

很明显这里是反序列化

 


 

序列化代码

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

 这里多看看,或者find都能找到flag

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

 BUU-日刷-[网鼎杯 2020 朱雀组]phpweb-call_user_func函数

 

上一篇:[十二省联考2019]春节十二响——长链剖分+堆


下一篇:sqli-labs(58-61)-challenges-报错注入