WEB渗透—PHP反序列化(五)

Web渗透—PHP反序列化        课程学习分享(课程非本人制作,仅提供学习分享)


靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场

课程地址:PHP反序列化漏洞学习_哔哩哔_bilibili


九、错误调用相关魔术方法

1.__call()

调用不存在的方法的名称和参数时触发魔术方法

<?php
class User{public function __call($arg1,$arg2){echo "$arg1,$arg2[0]";}
}
$test = new User();
$test -> callxxx('a');     //调用的方法callxxx()不存在,触发魔术方法call()
?>

触发时机:调用一个不存在的方法

功能:(无)

参数:2个参数传参$arg1,$arg2

返回值:调用的不存在的方法的名称和参数

触发call(),传参$arg1,$arg2(callxxx,a)

$arg1,调用不存在的方法的名称;$arg2,调用不存在的方法的参数;

2.__callStatic()

静态调用或调用成员变量时使用的方法不存在时触发魔术方法

<?php
class User{public function __callStatic($arg1,$arg2){echo "$arg1,$arg2[0]";}
}
$test = new User();
$test::callxxx('a');        //静态调用::时方法callxxx()不存在,触发魔术方法__callStatic
?>

触发时机:静态调用或调用成员常量时使用的方法不存在。

功能:(无)

参数:调用的不存在的方法$arg1.$arg2

返回值:调用的不存在的方法的名称和参数

触发callStatic(),传参$arg1,$arg2(callxxx,a)

$arg1,调用不存在的方法的名称;$arg2,调用不存在的方法的参数;

3.__get()

调用成员属性不存在时触发魔术方法

<?php
class User {public $var1;public function __get($arg1){echo  $arg1;}
}
$test = new User();
$test ->var2;     //调用的成员属性var2不存在
?>

触发时机:调用的成员属性不存在

功能:(无)

参数:传参$arg1

返回值:不存在的成员属性的名称

触发get(),把不存在的属性名称var2赋值给$arg1

4.__set()

给不存在的成员属性赋值时触发魔术方法

<?php
class User {public $var1;public function __set($arg1 ,$arg2){echo  $arg1.','.$arg2;}
}
$test = new User();
$test ->var2 = 1;     //给不存在的成员属性var2赋值为1
?>

触发时机:给不存在的成员属性赋值

功能:(无)

参数:传参$arg1,$arg2

返回值:不存在的成员属性的名称和赋的值

先触发get(),再触发set()

$arg1,不存在成员属性的名称;$arg2,不存在的成员属性var2赋的值

5.__isset()

对不可访问属性或不存在的属性使用isset()或empty()会触发魔术方法

<?php
class User {private $var;public function __isset($arg1){echo  $arg1;}
}
$test = new User();
isset($test->var);     //isset调用的成员属性var不可访问或不存在
?>

触发时机:对不可访问属性或不存在属性使用isset()或empty()时__isset()会被调用。

功能:(无)

参数:传参$arg1

返回值:不存在的成员属性的名称

触发inset(),返回$arg1,不存在或不可访问的成员属性的名称

isset()函数用于检测变量是否已经设置并且非空,如果非空返回true,否则返回false。

empty()函数用于检测一个变量是否为空,如果为空返回true,否则返回false。

6.__unset()

对不可访问属性或不存在的属性使用unset()会触发魔术方法

<?php
class User {private $var;public function __unset($arg1){echo $arg1;}
}
$test = new User();
unset($test->var);     //unset调用的成员属性var不可访问或不存在
?>

触发时机:对不可访问属性或不存在属性使用unset()时__unset()会被调用。

功能:(无)

参数:传参$arg1

返回值:不存在的成员属性的名称

触发unset(),返回$arg1,不存在或不可访问的成员属性的名称

unset()函数用于销毁指定变量,释放内存。如果成功销毁变量,则返回true,否则返回false。

7.__clone()

当使用clone关键字考本完成一个对象后,新对象会自动调用魔术方法

<?php
class User {private $var;public function __clone(){echo  "__clone test";}
}
$test = new User() ;
$newclass = clone($test) //使用colne()克隆对象完成后,触发魔术方法__clone()
?>

触发时机:当使用clone关键字拷贝完成一个对象后,新对象会自动调用定义的魔术方法__clone()

功能:(无)

参数:(无)

返回值:(无)

clone关键字用于创建一个对象的副本(即克隆一个对象)。

它是对象复制的一种方式,可以用来创建一个新的对象,而不是引用原始对象。通过使用clone,我们可以创建一个完全独立的对象,并且这个对象的属性值与原始对象相同。

汇总表格

__construct()__destruct()__sleep()__wakeup()
触发时机实例化对象对象引用完成或对象被销毁反序列化之后序列化serialize()之前反序列化unserialize()之前
功能提前清理不必要内容对象被序列化之前触发,返回需要被序列化存储的
参数
返回值需要被序列化存储的成员属性
__toString__invoke()__call()__callStatic()
触发时机对象被当成字符串调用(使用echo或者print)把对象当成函数调用调用一个不存在的方法静态调用不存在的方法
功能
参数$arg1,$arg2$arg1,$arg2
返回值调用的不存在的方法的名称和参数调用的不存在的方法的名称和参数
__get()__set()__isset()__unset()
触发时机调用成员属性不存在给不存在的成员属性赋值对不可访问属性使用isset()或empty()对不可访问属性使用unset()
功能
参数$arg1$arg1,$arg2$arg1$arg1
返回值不存在的成员属性的名称不存在的成员属性的名称和赋的值不存在的成员属性的名称不存在的成员属性的名称
__clone()
触发机制当使用colne关键字拷贝完成一个对象

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

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

相关文章

xcrun: error: invalid active developer path

macOS升级完成后出现 xcrun: error: invalid active developer path问题。 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun这是由于 Xcode command line tools 丢…

Python-Selenium-使用 pywinauto 实现 Input 上传文件

当前环境&#xff1a;Win10 Python3.7 pywinauto0.6.8&#xff0c;selenium3.14.1 示例代码 from pywinauto import Desktop import osapp Desktop() dialog app[打开] dialog[Edit].set_edit_text(os.getcwd() .\\example-01.jpg) dialog[Button].click() 其他方法&…

喜报|棱镜七彩获评江苏省专精特新中小企业

近日&#xff0c;江苏省工业和信息化厅发布《关于江苏省2023年专精特新中小企业和2020年度专精特新企业复核通过企业名单的公示》&#xff0c;棱镜七彩成功入选2023年江苏省省级专精特新中小企业名单。 图 2023年省级专精特新中小企业公式名单节选 “专精特新”是国家为鼓励中…

Python纯净式下载与安装

1. 下载 Download Python | Python.org 建议下老版本些的&#xff0c;毕竟求稳。 点击需要的版本&#xff0c;然后滑倒最下面&#xff0c;可以看到不同系统对应的下载选项&#xff1a; 2. 安装 如果下载慢的话&#xff0c;可以复制链接到迅雷下载&#xff0c;下载完成后&…

这个食堂管理大招,再不知道就晚了!

随着社会的不断发展&#xff0c;餐饮行业也在不断创新和进步。在这个数字化时代&#xff0c;智能技术为各行各业提供了更高效、便捷的解决方案。 食堂作为人们日常生活中不可或缺的一部分&#xff0c;也迎来了智能化的时代。智慧收银系统不仅提高了食堂的运营效率&#xff0c;还…

【算法Hot100系列】删除链表的倒数第 N 个结点

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

探讨二维半导体的概念、应用前景及其与传统半导体的差异

当探讨二维半导体时&#xff0c;我们置身于科技革新的前沿。这种材料以其纳米级薄度和独特电学性质区别于传统半导体&#xff0c;引发了科学界的广泛兴趣。本文将深入探讨二维半导体的概念、应用前景及其与传统半导体的差异。 什么是二维半导体&#xff1f; 二维半导体是由单…

分享4个文件自动备份方法,持续保护重要数据安全!

​如何执行文件自动备份任务&#xff1f;随着网络科技日新月异的高速发展&#xff0c;电脑和手机等电子设备在我们的日常工作生活中扮演着越来越重要的角色&#xff0c;使用频率逐渐增加&#xff0c;慢慢地也就离不开它了&#xff0c;从而导致积累在电脑中的重要数据量也在不断…

HackTheBox-Machines--Broker

文章目录 1 端口扫描2 测试思路3 漏洞探测4 CVE-2023-46604漏洞利用5.权限提升 Broker 测试过程 1 端口扫描 nmap -sC -sV 10.129.41.282 测试思路 目标开启了22、80、61616端口&#xff0c;在服务器开启了非web及一些需要账号密码进行登录的端口时&#xff0c;我们的入手点从这…

测试用例设计方法六脉神剑——第五剑:化气为型,场景用例破云

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

08‐Mysql全局优化与Mysql 8.0新特详解

文章目录 Mysql全局优化总结配置文件my.ini或my.cnf的全局参数最大连接数允许用户连接的最大数量MySQL能够暂存的连接数量JDBC连接空闲等待时长client连接空闲等待时长innodb线程并发数innodb存储引擎buffer pool缓存大小行锁锁定时间redo log写入策略binlog写入磁盘机制排序线…

22.JSP技术

JSP起源 在很多动态网页中&#xff0c;绝大部分内容都是固定不变的&#xff0c;只有局部内容需要动态产生和改变。如果使用Servlet程序来输出只有局部内容需要动态改变的网页&#xff0c;其中所有的静态内容也需要程序员用Java程序代码产生&#xff0c;整个Servlet程序的代码将…

12.12困境儿童关注日:共同守护儿童健康成长

2023年12月12日是第十三个困境儿童关注日,困境儿童关注日是在2011年由壹基金、北京师范大学社会发展与公共政策学院家庭与儿童研究中心、浙江大学传媒与国际文化学院中国公益传播研究中心共同发起设立的。儿童是国家的未来、民族的希望,困境儿童尤其需要关心和关注。自11月以来…

数据结构算法-快速排序算法

核心思路 快速排序算法核心思路 选择一个“基准”元素&#xff0c;将数组分为两个子数组&#xff0c;一个包含比基准小的元素&#xff0c;另一个包含比基准大的元素&#xff0c;然后对这两个子数组进行递归排序。 基准数 初始化两个索引 i 和 j&#xff0c;分别子数组的开头…

2.[BUU]rip

1.检查文件--》checksec 一下 查看之后发现是64位&#xff0c;直接放入IDA64进行反编译。 2.IDA反编译&#xff0c;进行分析 发现是gets()函数可以造成栈溢出&#xff0c;从而可以覆盖栈上的内容。 想法&#xff1a;通过gets函数&#xff08;栈溢出&#xff09;来篡改栈上的内…

Java代码解析:初学者的编程入门指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 Java作为一门强大而广泛应用的编程语言&#x…

速通Python基础语法--变量篇

Python设计哲学 解决一个问题&#xff0c;只提供一种方案&#xff1a;变量类型 写法灵活,一行代码表达更多意思,提高语言表达能力:动态类型(两面性) 颜色标识&#xff1a; 紫色&#xff1a;Python与C语言的区别 一、常量与表达式 二、变量 1、认识变量&#xff08;存数据&am…

国产ToolLLM的课代表---OpenBMB机构(清华NLP)旗下ToolBench的安装部署与运行(附各种填坑说明)

ToolBench项目可以理解为一个能直接提供训练ToolLLM的平台&#xff0c;该平台同时构建了ToolLLM的一个开源训练指令集。&#xff0c;该项目是OpenBMB机构&#xff08;面壁智能与清华NLP联合成立&#xff09;旗下的一款产品&#xff0c;OpenBMB机构名下还同时拥有另外一款明星产…

HQL的其他优化

CBO优化 CBO是指Cost based Optimizer&#xff0c;即基于计算成本的优化。 在Hive中&#xff0c;计算成本模型考虑到了&#xff1a;数据的行数、CPU、本地IO、HDFS IO、网络IO等方面。Hive会计算同一SQL语句的不同执行计划的计算成本&#xff0c;并选出成本最低的执行计划。目前…

Windows本地搭建开源企业管理套件Odoo并实现公网访问

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…