buuctf系列解题思路祥讲--[ZJCTF 2019]NiZhuanSiWei1——文件包含漏洞和伪协议的利用

1、解题思路

题目是一个源码,分析代码

得目标分别接收text,file,password三个参数,我们首先要满足file_get_contents($text,'r')==="welcome to the zjctf",所以

构造第一个payload:

text=data://text/plain,welcome to the zjctf,这里可能有人会疑惑为什么我们要用伪协议来写这个字段而不直接写text=该字段呢,因为题目用的file_get_contents函数作用是读取$text对应的 "文件资源" 的内容 ,而不是直接读取$text变量的值。所以我们借用伪协议把字符串伪装成文件资源。

构造第二个payload:

然后看到file不能包含flag,因为被正则匹配了,但是看到注释的useless文件,猜测这个可能是突破,就想到有可能是被执行了,所以想到用filter伪协议,这个伪协议会绕过 PHP 的直接解 析执行能直接获取文件的源码

file=php://filter/read=convert.base64-encode/resource=useless.php

然后我们先输入这俩个payload可以得到base64编码后的useless.php文件

解码后得到

复制代码
class Flag{  //flag.php 
    public $file;  
    public function __tostring(){  // 魔术方法,自动触发
        if(isset($this->file)){  
            echo file_get_contents($this->file); // 读取指定文件
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ"); // 必须返回字符串
        }  
    }  
}  

如果当前对象file属性存在输出,'你很接近了,加油'???噢噢噢噢,看这里的flag提示和tostring魔术方法自动执行输出当前的file属性那这里应该就是利用password反序列化输出file=flag.php,那我们就在本地序列化一下得到序列化字符"O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}"(记得赋予file属性)

输入payload得到这么个玩意(这里可能会有人疑惑为什么file变回useless.php。。。因为使用filter伪协议的话,该文件不会被执行,会影响输出结果,所以就默认useless好了)

页面显示我们已经找到他了,但是没有值,应该是隐藏了,检查源代码成功发现flag值

2、涉及知识点

主要是file_get_contents是读取对应的 "文件资源" 的内容

伪协议:data&filter

HP封装伪协议之php流filter,关键功能是在读取 文件内容时对 数据进行预处理 (比如编码),这个过程会绕过 PHP 的直接解析执行能直接获取文件的源码

基本格式如下: php ://filter/过滤方式/过滤器/resource=目标文件

data:// 伪协议的核心是将数据直接嵌入到 URL / 请求中 ,无需依赖外部文件, data:// 伪协议的核心是将字符串 "伪装成文件资源"

复制代码
基本格式如下:data://(<MIME类型>)(;base64),<数据内容>
相关推荐
绘梨衣的sakura路1 小时前
Fastjson ≤ 1.2.83 新型 RCE 漏洞深度分析:三层绕过机制与完整利用链
安全·web安全·json
北龙云海1 小时前
案例分享 | 面向公网业务系统境内访问白名单配置实操方案
运维·网络·安全·网络安全·告警·数据泄露·入侵攻击
niaiheni4 小时前
Fastjson 1.2.83 “Gadget-Free“ RCE
网络·安全·web安全
意疏4 小时前
远程办公软件哪个安全性高?UU远程8项安全防线全覆盖
网络·安全
Draina4 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
MartinYeung55 小时前
DC Scameter:一份反诈骗相关的专业分析报告
人工智能·安全
moonsims5 小时前
星闪在跨域无人化系统作用
开发语言·php
●VON6 小时前
鸿蒙 PC Markdown 编辑器原生右键弹层兼容
安全·华为·编辑器·harmonyos·鸿蒙
白山云北诗7 小时前
漏洞扫描+渗透测试:从资产摸底到风险验证,完成二次安全收口
网络·安全·web安全·渗透测试·漏洞扫描·ddos防护·cc防护
论迹复利9 小时前
PSA Certified 是什么——物联网芯片安全认证的三级体系
物联网·struts·安全