首页 > 其他分享 >[SWPUCTF 2021 新生赛]ez_unserialize

[SWPUCTF 2021 新生赛]ez_unserialize

时间:2024-02-21 22:01:58浏览次数:18  
标签:__ admin unserialize echo passwd flag 2021 ez 序列化

概括

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

过程

我们打开赛题,看看内容

 

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

 

 

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

 

进去看看。

 

果然如此

我们来分析一下这段代码

<?php

error_reporting(0);
show_source("cl45s.php");

class wllm{

    public $admin;
    public $passwd;

    public function __construct(){
        $this->admin ="user";
        $this->passwd = "123456";
    }

        public function __destruct(){
        if($this->admin === "admin" && $this->passwd === "ctf"){
            include("flag.php");
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}

$p = $_GET['p'];
unserialize($p);

?>

 

我们进行代码分析:

  1. error_reporting(0); :关闭PHP错误报告。
  2. show_source("cl45s.php"); :显示这个文件里面的内容。
  3. 创建了一个wllm类,然后在类里面定义了两个公共属性$admin与$passwd。
  4. 创建了两个函数__construct()函数和__destruct()函数,这两个的功能分别是初始化admin和passwd以及判断admin和passwd的值是否为ture。
  5. 如果admin==="admin",passwd==="ctf"的话,则echo出包含的flag文件
  6. 通过GET方式上传一个p参数,并将其传递给unserialize()函数进行反序列化。

我们可以通过实例化这个类,分别给admin和passwd赋值,然后使用序列化函数进行序列化操作,最后通过p参数进行上传访问。

脚本

<?php

error_reporting(0);
show_source("cl45s.php");

class wllm{

    public $admin;
    public $passwd;

    public function __construct(){
        $this->admin ="user";
        $this->passwd = "123456";
    }

        public function __destruct(){
        if($this->admin === "admin" && $this->passwd === "ctf"){
            include("flag.php");
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}

$w = new wllm();
$w->admin = "admin";
$w -> passwd = "ctf";
$w=serialize($w);
echo $w;

?>

拿下flag

 

总结

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

标签:__,admin,unserialize,echo,passwd,flag,2021,ez,序列化
From: https://www.cnblogs.com/AnimeBucket/p/18026293

相关文章

  • np.squeeze()
    np.squeeze()是NumPy库中的一个函数,用于从数组中删除单维度的条目。它返回一个在输入数组中删除了尺寸为1的维度的新数组。下面是使用np.squeeze()的示例代码:点击查看代码importnumpyasnparr=np.array([[[1,2,3],[2,3,4]]])print(arr.shape)sqeezed_arr=np.squee......
  • 微软 Office 2021 专业增强版,安装完自动激活
    123盘下载地址  MicrosoftOffice2021VL官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘(123pan.com)安装前先关闭windows系统自带的 病毒  微软办公软件套件MicrosoftOfficeLTSC2021专业增强版2024年01月批量许可版更新推送!Office2021正式版和Windows11......
  • Filezilla 使用教程
    FileZilla是一款免费开源的FTP客户端软件,虽然它是免费软件,可性能却一点也不含糊,比起那些共享软件来有过之而无不及,具备大多数的FTP软件功能。其可控性、有条理的界面和管理多站点的简化方式、特别是它的传输速度,简直是出神入化,也是它最大的特色。总的来说是它一款出类拔萃的......
  • FileZilla 免费的FTP软件工具下载与使用教程
    FileZilla是一个免费并且全平台可用的FTP软件,借助FileZilla可以方便的通过FTP实现文件的上传与下载。FileZilla是VPSGO一直在使用的,所以今天就把这个工具介绍给大家,包括FileZilla下载、FileZilla安装,以及简单的FileZilla教程。一、FileZilla下载FileZilla官网:https:/......
  • 2021/1/14
    可以看出,for循环是将字符串的内容:依次取出所以,for循环也被称之为:遍历循环 同while循环不同,for循环是无法定义循环条件的只能从被处理的数据集中,依次取出内容进行处理所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大 range语句语法1:range(nu......
  • FileZilla 服务器 报Warning: FTP over TLS is not enabled, users cannot securely l
    FileZilla服务器报Warning:FTPoverTLSisnotenabled,userscannotsecurelylogin.1.登录至FTP服务器 2.选择编辑->设置->SSL/TLS设置->。。。。。[看图操作],注:证书导出路径不能有中文字符 3.选择编辑->设置->SSL/TLS设置->选择上一步操作导出的证书,注意导出......
  • Filezilla Server 使用教程
    FilezillaServer使用教程FileZillaServer是一款免费开源的FTP服务器端架设程序,使用FileZillaServer你可以轻轻松松在你的服务器开设ftp,下面演示用FileZillaServer来建立服务器上各网站的ftp。步骤1、首先下载好FilezillaServer软件,点进去下载即可,如图所示: 将下载好的Fil......
  • P9847 [ICPC2021 Nanjing R] Crystalfly
    前景导入当\(t\in[1,2]\)时,本题如何求解?答:树形dp设\(f[i]\)为以\(i\)为根的树,根节点的晶蝶已消散且儿子节点的晶蝶还未被惊动,能获得的最大晶蝶数。则有状态转移方程\(f[i]=(\sumf[u])+max(a[u])\),其中\(u\)为\(i\)的儿子。最终的答案即为\(f[1]+a[1]\)划向更......
  • MAC DOCKER Zookeeper 启动报错 mkdir /host_mnt/private/var/db/timezone/tz: operat
    在Mac电脑上启动Zookeeper和kafka的docker容器时报错一开始我的语句是这样的dockerpullwurstmeister/zookeeperdockerrun-d--restart=always--log-driverjson-file--log-optmax-size=100m--log-optmax-file=2--namezookeeper-p2181:2181-v/etc/localtime:/et......
  • 2021年全年回顾
    书接2020年全年回顾,在2020年11月,领导安排投入新的业务。由于业务调整,部门原有的业务都交接出去,因此迫切需要寻找新的方向。部门领导设计了几个方向,我参与的是其中一个,目标打造新的实时3D渲染产品,业界的竞品包括Unreal、Unity等。部门有同事一定投入,收集了资料供部门内同事学习,......