CTF-web_php_serialize反序列化

一.根据题目猜测和反序列化漏洞有关

1.思路:

进入实验环境后,发现是一段php代码,通过接受get请求方式将提交过来的var的值,

先进行base64解码,再进行正则的判断,如果不匹配成功就会反序列化输入的参数值。

所以这里我们目的就是为了绕过正则表达式,让其反序列化出我们要的fl4g.php,再通过析构函数,高亮出fl4g文件中的内容。

2.步骤:

通过代码中的注释我们发现flag在fl4g.php这个文件里面,所以我们要将其序列化

img

编写一段代码先实例化我们要序列化的类,这里吧fl4g.php传进去,然后通过构造方法将其赋值给$file,

然后我们输出序列化的结果,这里为了绕过正则可以采用将 :4: 替换为 :+4:,

在 PHP5 < 5.6.25, PHP7 < 7.0.10 的版本存在wakeup的漏洞。当反序列化中object的个数和之前的个数不等时,wakeup就会被绕过。**
**

所以我再将它的 :1: 替换为一个大点的值 比如 :2: ,

因为在接受到var值后会对其base64解码,所以这里我们再将其base64编码,然后输出即得到我们要输入的参数值。

TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ== ,得到flag。

**这里我们要注意:这里的file变量为私有变量(protected变量应该也会),所以序列化之后的字符串开头结尾各有一个空白字符(即%00),

字符串长度也比实际长度大2,如果将序列化结果复制到在线的base64网站进行编码可能就会丢掉空白字符,从而得到错误的编码值

如下图,通过strlen求到序列化的长度为48,但实际我数了一下只有46。

img

img

img

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑朱雀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值