[极客大挑战 2019]PHP
这道题打开之后是一个动态的小猫 题中告诉我们
因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯 不愧是我!!!
所以我们查看一下网页备份文件 (www.zip)
这里有个flag文件 但是我访问进去用他给的答案是错的 不可能这么简单
再访问index.php
再index.php的文件里面 我们发现 这里进行了get传参并且包含了class.php文件
还是用unserialize将select进行反序列化操作
又访问了class文件
php代码 我们简单看一下 发现username是admin password是100
这里面_wakeup强行将username的值变成了guest
所以我们需要想方法绕过 这里我们使用序列化操作 将这串php代码转化成文本字符串(serialize)
<?phpclass Name{private $username = 'admin';private $password = '100';
}$select = new Name();
$res = serialize(@$select);
echo $res
?>
我们把payload进行编译得到了相应的文本
O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
这里我们进行提交 但是还是显示错误
这里我们有两个问题是 网站将我们所输入的空格给过滤了 我们需要绕过一下 还有就是只有当成员属性数大于实际属性数时 才能绕过_wakeup 所以我们还得将成员数2改为3
空格的url编码是%00
重新构造的payload为O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
就得到了flag{c7751580-9bc6-4e7b-a4e9-0c2dc3bdfa99}
总结
常见的网站源码备份文件后缀: tar.gz,zip,rar,tar
常见的网站源码备份文件名: web,website,backup,back,www,wwwroot,temp
过滤_wakeup时 成员属性数需要大于实际属性数