news 2026/2/3 1:44:36

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),<数据内容>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/24 0:19:27

AI时代从重构认知开始——告诉你AI时代能力新公式

拥抱AI&#xff0c;从重构认知开始 小白一枚&#xff0c;欢迎各位顺手关注&#xff0c;点赞&#xff0c;收藏&#xff0c;你的善意是我创作的动力。 你有没有过这样的瞬间&#xff1f; 看到一个酷炫的效果&#xff0c;读到一个精彩的观点&#xff0c;冒出一个绝妙的想法……但…

作者头像 李华
网站建设 2026/1/29 9:29:46

你的SQL为什么慢?看懂EXPLAIN是第一步

慢查询排查实战指南 当你发现一个接口突然变慢,很可能是数据库查询出了问题。下面教你如何快速定位和解决。 第一步:使用 EXPLAIN 快速诊断 问题查询: SELECT * FROM users WHERE city = 上海 AND age > 25; -- 执行时间:8.2秒(之前0.3秒)诊断命令: EXPLAIN

作者头像 李华
网站建设 2026/1/27 16:32:40

探索Plecs的BUCK热仿真:原理解释与流程详解

Plecs的BUCK热仿真&#xff0c;包含原理解释和流程解释PDF文档。在电力电子领域&#xff0c;热管理对于系统的稳定性和可靠性至关重要。Plecs作为一款强大的电路仿真软件&#xff0c;其热仿真功能为我们分析BUCK电路热性能提供了有力工具。今天咱就深入探讨下Plecs的BUCK热仿真…

作者头像 李华
网站建设 2026/2/1 9:14:05

Obsidian-Douban完整教程:快速将豆瓣数据同步到个人笔记

Obsidian-Douban完整教程&#xff1a;快速将豆瓣数据同步到个人笔记 【免费下载链接】obsidian-douban an obsidian plugin that can pull data from douban to your markdown file 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-douban 想要在Obsidian中轻松管…

作者头像 李华
网站建设 2026/1/22 0:53:26

10 个自考论文工具推荐,AI 写作降重神器合集

10 个自考论文工具推荐&#xff0c;AI 写作降重神器合集 论文路上的“三座大山”&#xff1a;时间、重复率与反复修改 自考学子在完成毕业长文的过程中&#xff0c;常常面临三大难题&#xff1a;任务繁重、时间紧迫、重复率高。一篇高质量的论文不仅需要扎实的理论基础和严谨的…

作者头像 李华
网站建设 2026/1/27 8:07:29

Docker容器自动更新终极指南:3步实现智能管理

Docker容器自动更新是现代应用运维的重要环节&#xff0c;通过自动化工具让您的容器始终保持最新版本。Watchtower作为专业的容器更新解决方案&#xff0c;能够智能监控镜像变化并自动完成更新流程&#xff0c;大大减轻了运维负担。✨ 【免费下载链接】watchtower containrrr/w…

作者头像 李华