xctf进阶-unserialize3反序列化

青春壹個敷衍的年華 提交于 2019-12-03 14:47:06

一道反序列化题:

打开后给出了一个php类,我们可以控制code值:

 

 

`unserialize()` 会检查是否存在一个 `__wakeup()` 方法。如果存在,则会先调用 `__wakeup` 方法,预先准备对象需要的资源。

作用:__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

我们先给这个类创建一个对象,然后输出这个对象的序列化值:

 

 然后将序列化结果拿给?code参数进行get请求

 

发现执行了_wakeup方法,那么怎么绕过这个方法呢? 

百度了一下,当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行

那么我们把O:4:"xctf":2:{s:4:"flag";s:3:"111";}传给code再进行请求:

 

 得出flag.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!