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

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


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

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


一、PHP面向对象基本概念

1.程序开发:面向过程VS面向对象

面向过程

        面向过程是一种以“整体事件”为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数

面向对象

        面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个“对象”;对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。

2.类的定义

        类是定义了一件事物的抽象特点,它将数据的形式以及这些数据上的操作封装在一起。对象是具有类类型的变量,是对类的实例。

内部构成:成员变量(属性)+成员函数(方法)

成员变量(属性)

        定义在类内部的变量。

        该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。

成员函数(方法)

        定义在类的内部,可用于访问对象的数据。

继承:

        继承性是子类自动共享父类数据结构和方法的机制,是类之间的一种关系。

        在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把一个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

父类:一个类被其他类继承,可以将该类称为父类,或基类,超类。

子类:一个类继承其他类称为子类,也可称为派生类。


二、类与对象

类是对象的抽象,而对象是类的具体实例。

类是想法,把类实例化(new),调用具体值后就变成了对象。

1.类的结构

类:定义类名、定义成员变量(属性)、定义成员函数(方法)

class Class_Name{//成员变量声明//成员函数声明
}

2.类的内容

创建一个类:

class hero{                    //定义类(类名)var $name;                 //声明成员变量var $sex;                  //var是一种修饰符function jineng($var1){    //声明成员函数(方法)echo $this->name;      //使用预定义$this调用成员变量echo $var1;           //成员函数传参$var1可以直接调用}
}

3.实例化和赋值

$cyj=new hero();            //实例化类hero()为对象cyj​
$cyj->name='chengyaojin';   //参数赋值​
$cyj->sex='man';            //参数赋值
$cyj->jineng('zoufan');     //调用函数
print_r($cyj);              //打印对象cyj

4.类的修饰符介绍

在类中直接声明的变量称为成员属性(也可以称为成员变量)。

可以在类中声明多个变量,即“对象”中可以有多个成员属性,每个变量都存储“对象”不同的属性信息。

访问权限修饰符:对属性的定义

常用访问权限修饰符:

        public:公共的,在类的内部、子类中,或者类的外部都可以使用,不受限制;

        protected:受保护的,在类的内部、子类中可以使用,但不能在类的外部使用;

        private:私有的,只能在类的内部使用,在类的外部或者子类中都无法使用。

类的内部

子类

类的外部

public

protected

×

private

×

×

class hero{public  $name='chengyaojin';         //公有的private  $sex='man';                 //私有的protected  $shengao='165';           //受保护的:内部、子类可用function jineng($var1) {echo $this->name;echo $var1;}
}

class hero{public  $name='chengyaojin';                            //公有的private  $sex='man';                                    //私有的protected  $shengao='165';                              //受保护的:内部、子类可用function jineng($var1) {echo $this->name;echo $var1;}
}class hero2 extends hero{function test(){echo $this->name."<br/>";                        //public子类可用echo $this->sex."<br/>";                         //private子类不可用echo $this->shengao."<br/>";                     //protected子类可用}
}
$cyj= new hero();
$cyj2=new hero2();
echo $cyj->name."<br/>";                                  //外部只可用public
echo $cyj2->test();                                       //子类内部可用public和protected

5.类的成员方法

在类中定义的函数被称为成员方法。

函数实现的是某个独立的功能;

成员方法实现的是类中的一个行为,是类的一部分。

可以在类中声明多个成员方法,成员方法的声明和函数声明完全一样,只不过在声明成员方法时可以在function关键字前加一些访问权限修饰符,如public、protected、private(可以省略,默认为public

<?php
class Stundents{var $name;public $age;private $sex;protected $school;protected static function Read(){}function Listen(){}
}
?>

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

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

相关文章

vue3 + ts 防抖指令,节流指令,复制指令

vue3 ts 自定义指令 防抖指令&#xff0c;节流指令&#xff0c;复制指令 本文使用了 element-ui , element-plus 官网 源文件 https://admin.spicyboy.cn/#/directives/debounceDirect 新建 copy.ts 文件 &#xff08;复制指令&#xff09; import type { Directive, Di…

12.6每日一题(备战蓝桥杯程序的控制结构)

12.6每日一题&#xff08;备战蓝桥杯程序的控制结构&#xff09; 题目 1638: 【入门】判断正负数或零题目描述输入输出样例输入样例输出来源/分类 题解 1638: 【入门】判断正负数或零题目 1348: 【入门】求绝对值题目描述输入输出样例输入样例输出来源/分类 题解 1348: 【入门】…

【Qt开发流程】之2D绘图2:坐标系统

概述 Qt的坐标系统由QPainter类控制。QPainter与QPaintDevice和QPaintEngine 类一起构成了Qt的绘画系统的基础。QPainter用于执行绘图操作&#xff0c;QPaintDevice是一个二维空间的抽象&#xff0c;可以使用QPainter在其上绘制&#xff0c;QPaintEngine 提供了QPainter用于在…

java--Stream流常见的中间方法和终结方法

1.Stream流常见的中间方法 中间方法指的是调用完成后会返回新的Stream流&#xff0c;可以继续使用(支持链式编程) 2.Stream流常见的终结方法 ①终结方法指的是调用完成后&#xff0c;不会返回新Stream了&#xff0c;没法继续使用流了。 ②收集Stream流&#xff1a;就是把Stre…

MySQL执行流程_执行一条select语句,期间发生了什么

文章目录 执行一条select语句&#xff0c;期间发生了什么MySQL执行流程第一步&#xff1a;连接器第二步&#xff1a;查询缓存第三步&#xff1a;解析SQL第四步&#xff1a;执行SQL 执行一条select语句&#xff0c;期间发生了什么 MySQL执行流程 server层负责建立连接、分析和执…

SpringAMQP

目录 利用SpringAMQP实现HelloWorld中的基础消息队列功能: 1&#xff0e;在父工程中引入spring-amqp的依赖 2&#xff0e;在publisher服务中利用RabbitTemplate发送消息到simple.queue这个队列 3&#xff0e;在consumer服务中编写消费逻辑&#xff0c;绑定simple.queue这个…

Python Bokeh库详解:交互式数据可视化

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 数据可视化在数据分析和科学研究中起着至关重要的作用。而Bokeh&#xff08;发音为“bo-kay”&#xff09;是一个强大的Python交互式可视化库&#xff0c;提供了丰富的工具和功能&#xff0c;使得创建交互式、吸…

西工大网络空间安全学院计算机系统基础实验二(phase_3,phase_4,phase_5)

大家千万不要着急&#xff0c;不要慌张&#xff0c;即使自己并不了解多少汇编代码的知识&#xff0c;即使自己计基课上的基础知识学的并不扎实&#xff0c;也都不要紧&#xff0c;因为这次计基实验考察的重点并不是基础知识&#xff0c;而是对gdb工具的掌握&#xff0c;以及心细…

基于.NET Core + Quartz.NET+ Vue + IView开箱即用的定时任务UI

前言 定时任务调度应该是平时业务开发中比较常见的需求&#xff0c;比如说微信文章定时发布、定时更新某一个业务状态、定时删除一些冗余数据等等。今天给大家推荐一个基于.NET Core Quartz.NET Vue IView开箱即用的定时任务UI&#xff08;不依赖数据库,只需在界面做简单配…

Spring Boot学习随笔- 集成JSP模板(配置视图解析器)、整合Mybatis(@MapperScan注解的使用)

学习视频&#xff1a;【编程不良人】2021年SpringBoot最新最全教程 第五章、JSP模板集成 5.1 引入JSP依赖 <!--引入jsp解析依赖--> <!--C标签库--> <dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version&…

第二十一章网络通信

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmissio…

java系列-LinkedHashMap

1.插入新节点时&#xff0c;会将该节点加到链表尾部 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{/*** The head (eldest) of the doubly linked list.*/transient LinkedHashMapEntry<K,V> head;/*** The tail (young…

【小红书运营指南2】小红书自律标签的达人分解

小红书标签的达人分解 写在最前面11.27初步想法达人分析 标签拆解&#xff08;速览版&#xff09;分析应用 思路 相关标签拆解&#xff08;详细版&#xff09;11、职场-职场干货 文化薯&#xff08;创业&#xff0c;也是专注知识付费&#xff0c;可以对标学习&#xff09;笔记画…

用modelbox server启动流程图,暴露Restful接口

背景 假设你已经搭建了modelbox开发容器&#xff0c;能够使用webUI构建流程图。如果没有请参考昇腾npu上构建modelbox webUI开发容器教程。 现在&#xff0c;本文会说明&#xff0c;如何在终端用命令的方式将流程图暴露为服务&#xff0c;并能够在本地用postman访问。 本文参…

华为OD机试三(完全二叉树部分后续遍历、猜密码、五子棋谜)

1. 完全二叉树部分后续遍历 题目表述&#xff1a;输入&#xff1a; 1 2 3 4 5 6 7 输出&#xff1a; 2 3 1 示例代码&#xff1a; # 测试数据 test_data [1,2,3,4,5,6,7] # 找出非叶子节点 new_list [] for i in test_data:left 2 * iright left 1if left in test_data…

使用 Webshell 访问 SQL Server 主机并利用 SSRS

RDS SQL Server提供Webshell功能&#xff0c;用户可以通过Web界面登录RDS SQL Server 实例的操作系统。通过Webshell&#xff0c;用户可以在RDS SQL Server实例上执行命令、上传和下载文件以及执行各种操作。Webshell 提供了一种方便高效的远程管理方法&#xff0c;尤其是在 SS…

如何使用nacos进行配置管理以及代码集成

首先需要在maven的pom文件中引入nacos-config依赖 <!--nacos配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency> 在项目中添加boo…

Python 全栈体系【四阶】(四)

第四章 机器学习 一、人工智能概述 1. 什么是人工智能 人工智能&#xff08;Artificial Intelligence&#xff09;是计算机科学的一个分支学科&#xff0c;主要研究用计算机模拟人的思考方式和行为方式&#xff0c;从而在某些领域代替人进行工作。 2. 人工智能的学科体系 …

输出网络结构图,mmdetection

控制台输入&#xff1a;python tools/train.py /home/yuan3080/桌面/detection_paper_6/mmdetection-master1/mmdetection-master_yanhuo/work_dirs/lad_r50_paa_r101_fpn_coco_1x/lad_r50_a_r101_fpn_coco_1x.py 这个是输出方法里面的&#xff0c;不是原始方法。 如下所示&a…