Pikachu反序列化实验、CTF实验

本文详细介绍了PHP的反序列化过程,包括serialize()和unserialize()函数的使用,并探讨了如何利用这些函数触发魔术方法如__construct()。通过CTF实验,展示了如何利用反序列化漏洞进行攻击,例如通过构造特定的输入字符串来控制对象的属性和行为。实验涵盖了从基本的反序列化利用到更复杂的场景,如控制类的行为、修改文件内容等。
摘要由CSDN通过智能技术生成

Pikachu反序列化

serialize() //将一个对象转换成一个字符串

unserialize() //将字符串还原成一个对象

触发:unserialize函数的变量可控,文件中存在可利用的类,类中有魔术方法:

__construct()//创建对象时触发

__destruct() //对象被销毁时触发

__call() //在对象上下文中调用不可访问的方法时触发

__callStatic() //在静态上下文中调用不可访问的方法时触发

__get() //用于从不可访问的属性读取数据

__set() //用于将数据写入不可访问的属性

__isset() //在不可访问的属性上调用isset()或empty()触发

__unset() //在不可访问的属性上使用unset()时触发

__invoke() //当脚本尝试将对象调用为函数时触发

https://c.runoob.com/compile/1/

序列化:

<?php

 $a='abc';

 echo serialize($a);

?>

反序列化:

<?php

 $b='s:3:"abc";';

 echo unserialize($b);

?>

<?php

 class S{

          var $test="pikachu";

          function __construct(){

                   echo $thie->test;

          }

 }

$aa =new S();

echo serialize($aa);

?>

序列化

<?php

 class MM{

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值