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{
本文详细介绍了PHP的反序列化过程,包括serialize()和unserialize()函数的使用,并探讨了如何利用这些函数触发魔术方法如__construct()。通过CTF实验,展示了如何利用反序列化漏洞进行攻击,例如通过构造特定的输入字符串来控制对象的属性和行为。实验涵盖了从基本的反序列化利用到更复杂的场景,如控制类的行为、修改文件内容等。
最低0.47元/天 解锁文章
6015

被折叠的 条评论
为什么被折叠?



