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

×

×

WEB渗透—PHP反序列化(一)_第1张图片

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

WEB渗透—PHP反序列化(一)_第2张图片

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."
";                        //public子类可用 echo $this->sex."
";                         //private子类不可用 echo $this->shengao."
";                     //protected子类可用 } } $cyj= new hero(); $cyj2=new hero2(); echo $cyj->name."
";                                  //外部只可用public echo $cyj2->test();                                       //子类内部可用public和protected

5.类的成员方法

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

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

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

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

你可能感兴趣的:(PHP反序列化,前端,web安全,php)