[SWPUCTF 2021 新生赛]ez_unserialize
概括这是一道PHP反序列化的CTF赛题,本意是想用这道题对PHP反序列化进行一定的学习。
过程
我们打开赛题,看看内容
没有发现什么东西,看看他的页面代码
根据他的提示,感觉是存在一个robots.txt文件的,尝试访问一下。
进去看看。
果然如此
我们来分析一下这段代码
我们进行代码分析:
[*]error_reporting(0); :关闭PHP错误报告。
[*]show_source("cl45s.php"); :显示这个文件里面的内容。
[*]创建了一个wllm类,然后在类里面定义了两个公共属性$admin与$passwd。
[*]创建了两个函数__construct()函数和__destruct()函数,这两个的功能分别是初始化admin和passwd以及判断admin和passwd的值是否为ture。
[*]如果admin==="admin",passwd==="ctf"的话,则echo出包含的flag文件
[*]通过GET方式上传一个p参数,并将其传递给unserialize()函数进行反序列化。
我们可以通过实例化这个类,分别给admin和passwd赋值,然后使用序列化函数进行序列化操作,最后通过p参数进行上传访问。
脚本
拿下flag
https://img2024.cnblogs.com/blog/2899036/202402/2899036-20240221215555807-1292918548.png
总结
这道赛题让我们可以简单入门php的反序列化,其中对于代码解析上存在一些疑问。比如这里的$this->admin与$this->passwd。这里通过Google了解到,$this在OOP中是一个伪变量,简单点说就是哪个对象调用,$this就是哪个变量。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]