当前位置:首页 > 教育培训 >

php新手入门

来源:原点资讯(www.yd166.com)时间:2023-06-20 17:21:21作者:YD166手机阅读>>

序列化

搞懂反序列化漏洞的前提,先搞懂什么是序列化:

序列化说通俗点就是把一个对象变成可以传输的字符串。

序列化实际是为了传输的方便,以整个对象为单位进行传输, 而序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。如果了解底层的同学可以知道,类中的方法本就不在类中。

而在php中,使用函数serialize()来返回一个包含字节流的字符串来表示

比如:

class S{

public $test="sd";

}

$s=new S(); //创建一个对象

serialize($s); //把这个对象进行序列化

序列化的结果是:

O:1:"S":1:{s:4:"test";s:2:"sd";}

代表的含义依次是:

  • O:代表object
  • 1:代表对象名字长度为一个字符
  • S:对象的名称
  • 1:代表对象里面有一个变量
  • s:数据类型(string)
  • 4:变量名称的长度
  • test:变量名称
  • s:数据类型
  • 2:变量值的长度
  • sd:变量值

顺便说一下PHP 对不同类型的数据用不同的字母进行标示

  • a - array
  • b - boolean
  • d - double
  • i - integer
  • o - common object
  • r - reference
  • s - string
  • C - custom object
  • O - class
  • N - null
  • R - pointer reference
  • U - unicode string

反序列化

就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。

使用unserialize()函数

$u=unserialize("O:1:"S":1:{s:4:"test";s:2:"sd";}");

echo $u->test; //得到的结果为sd

反序列化安全

序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题

有哪些php常见的魔法函数:

  • __construct() 当一个对象创建时被调用
  • __destruct() 当一个对象销毁前被调用
  • __sleep() 在对象被序列化前被调用
  • __wakeup 将在反序列化之后立即被调用
  • __toString 当一个对象被当做字符串使用时被调用
  • __get(),__set() 当调用或设置一个类及其父类方法中未定义的属性时
  • __invoke() 调用函数的方式调用一个对象时的回应方法
  • __call 和 __callStatic前者是调用类不存在的方法时执行,而后者是调用类不存在的静态方式方法时执行。

有面向对象编程基础的同学应该很多都能看懂,比如__contruct():c 中的构造函数,java中的构造器;__destruct():c 中的析构函数.java的自动回收机制:finalize()

靶场实战

了解了序列化、反序列化、php魔法函数,先来看一个靶场,尝试反序列化构造payload

payload

看一下题目,已知反序列化入口

php新手入门,(1)

先随便输点东西看看

php新手入门,(2)

这里既然是反序列化接口,就需要输入我们序列化的字符串,比如插入我们刚刚的payload

O:1:"S":1:{s:4:"test";s:2:"sd";}

php新手入门,(3)

不仅于此,构造xss

O:1:"S":1:{s:4:"test";s:28:"<script>alert('sd')</script>";}

php新手入门,(4)

栏目热文

php开发从零开始(php开发入门到精通)

php开发从零开始(php开发入门到精通)

PHP是一种广泛用于Web开发的编程语言,它是一种易学易用的语言,适合初学者入门。在本文中,我们将为您提供一个从零开始学...

2023-06-20 17:06:52查看全文 >>

php入门手册(php完全自学手册)

php入门手册(php完全自学手册)

《PHP学习手册》全面介绍了使用PHP进行Web开发的各种技术。在内容排列上由浅入深,让读者循序渐进地掌握编程技术;在内...

2023-06-20 17:08:23查看全文 >>

php入门详细教程学习(php教程从零开始入门学习)

php入门详细教程学习(php教程从零开始入门学习)

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语...

2023-06-20 17:15:26查看全文 >>

php开发详细教程(PHP微博开发案例教程)

php开发详细教程(PHP微博开发案例教程)

PHP作为开源语言,发展至今已有很多成熟的国内外开源系统,足以满足个人和企业用户自己建立WEB站点,下面则主要介绍PHP...

2023-06-20 17:00:45查看全文 >>

php新手入门必备技巧(php新手入门教程完整版交流)

php新手入门必备技巧(php新手入门教程完整版交流)

目前的PHP人才供求紧张,其高端人才更是一将难求。很多人选择PHP,也是追求其高薪,那我们在学习PHP应该注意些什么呢?...

2023-06-20 17:32:49查看全文 >>

学乐云教学官方客户端

学乐云教学官方客户端

学乐云教学最新版本是一款专门为老师打造的教学管理软件,提供了相当多的教学管理功能,可以更好的管理学生以及学生的学习情况。...

2023-06-20 17:11:11查看全文 >>

学乐云教学有电脑客户端吗(学乐云电脑版下载方法)

学乐云教学有电脑客户端吗(学乐云电脑版下载方法)

近日,2018-2022教育部高校教育技术专业教学指导分委员会公布了《“停课不停学”在线教学实践推进研究》优秀成果的通知...

2023-06-20 17:18:51查看全文 >>

哪些车辆不得上路行驶(机动车在什么情况下不得上路行驶)

哪些车辆不得上路行驶(机动车在什么情况下不得上路行驶)

国内保有量最高的一类交通工具是汽车,保有量第二高的就是电动车了。很多人喜欢电动车,一方面是因为电动车价格便宜,骑行门槛低...

2023-06-20 17:21:42查看全文 >>

机动车在什么情况下不得上路行驶(机动车在什么情况下可以上路)

机动车在什么情况下不得上路行驶(机动车在什么情况下可以上路)

以下四种情况对道路交通有诸多负面影响绍兴交警在此倡议各位驾驶人存在这些情况的请不要再上路行驶!01疲劳驾驶什么是疲劳驾驶...

2023-06-20 17:29:46查看全文 >>

机动车禁止上路行驶的规定(上道路行驶的机动车有什么规定)

机动车禁止上路行驶的规定(上道路行驶的机动车有什么规定)

因疫情防控工作需要,今天下午14时开始,除特种作业车辆外,其余所有机动车(含电动自行车)严禁上道路行驶,违规出行的,成县...

2023-06-20 17:27:33查看全文 >>

文档排行