找回密码
 立即注册
首页 业界区 业界 [SWPUCTF 2021 新生赛]ez_unserialize

[SWPUCTF 2021 新生赛]ez_unserialize

百谖夷 2025-6-9 08:34:47
概括

这是一道PHP反序列化的CTF赛题,本意是想用这道题对PHP反序列化进行一定的学习。
过程

我们打开赛题,看看内容
1.png

 
没有发现什么东西,看看他的页面代码
2.png

 
 
根据他的提示,感觉是存在一个robots.txt文件的,尝试访问一下。
3.png

 
进去看看。
4.png

 
果然如此
我们来分析一下这段代码
  1. [/code] 
  2. 我们进行代码分析:
  3. [list=1]
  4. [*]error_reporting(0); :关闭PHP错误报告。
  5. [*]show_source("cl45s.php"); :显示这个文件里面的内容。
  6. [*]创建了一个wllm类,然后在类里面定义了两个公共属性$admin与$passwd。
  7. [*]创建了两个函数__construct()函数和__destruct()函数,这两个的功能分别是初始化admin和passwd以及判断admin和passwd的值是否为ture。
  8. [*]如果admin==="admin",passwd==="ctf"的话,则echo出包含的flag文件
  9. [*]通过GET方式上传一个p参数,并将其传递给unserialize()函数进行反序列化。
  10. [/list]我们可以通过实例化这个类,分别给admin和passwd赋值,然后使用序列化函数进行序列化操作,最后通过p参数进行上传访问。
  11. [size=6]脚本[/size]
  12. [code]
复制代码
拿下flag

 
总结

这道赛题让我们可以简单入门php的反序列化,其中对于代码解析上存在一些疑问。比如这里的$this->admin与$this->passwd。这里通过Google了解到,$this在OOP中是一个伪变量,简单点说就是哪个对象调用,$this就是哪个变量。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册