[极客大挑战 2019]Secret File学习笔记

正文

一、查看源代码,信息收集

访问首页,Ctrl+U查看页面源代码,发现有一个隐藏链接指向 Archive_room.php

访问 Archive_room.php,页面提示"我把他们都放在这里了,去看看吧",并有一个 SECRET 按钮指向 action.php

二、访问网页,查看服务器返回信息

访问 action.php,使用brupsuit工具拦截一下,把请求包发送到重放器,点击发送之后,可以看到服务器返回 302 重定向到 end.php。但重点在返回的 HTML 源码中有一段 HTML 注释:

html 复制代码
<!-- secr3t.php -->

这暴露了一个隐藏的秘密文件 secr3t.php

三、访问网页,代码审计

访问 secr3t.php,页面会高亮显示自身源码:

php 复制代码
<?php
// 语法高亮显示当前PHP源代码,方便页面直接查看源码
highlight_file(__FILE__);

// 关闭所有错误提示,屏蔽报错信息,增加排查难度
error_reporting(0);

// 通过GET方式接收URL传参名为file的值,赋值给变量$file
$file = $_GET['file'];

// 多重黑名单关键词过滤判断
// strstr:区分大小写查找字符串;stristr:不区分大小写查找
if(
    strstr($file,"../")        // 禁止传入 路径跳转符 ../ 防止目录穿越
    || stristr($file, "tp")    // 禁止包含含tp字符(拦截ThinkPHP框架相关文件)
    || stristr($file,"input")  // 禁止包含含input字符(拦截php://input伪协议)
    || stristr($file,"data")   // 禁止包含含data字符(拦截data://伪协议)
){
    // 命中黑名单关键词,输出拒绝提示
    echo "Oh no!";
    // 直接终止程序运行,不再执行后续代码
    exit();
}

// 无黑名单拦截,直接引入/加载用户传入的文件,核心文件包含漏洞点
include($file);

// 题目提示:flag存储在flag.php文件内
//flag放在了flag.php里
?>

这段代码给了三个信息:

  • 接受 GET 参数 file,然后通过 include($file) 包含该文件 ------ 典型的 文件包含漏洞
  • 但存在四个过滤规则:
    • ../ ------ 禁止目录穿越
    • tp (不区分大小写)------ 防止使用 php:// 等伪协议(stristr 匹配 tp
    • input ------ 禁止 php://input
    • data ------ 禁止 data://
  • 注释提示:flag 在 flag.php

四、php://filter/实现"PHP过滤"绕过

虽然 tp 被过滤了,但我们需要检查 php://filter 这个字符串中是否包含 tp

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

逐字符检查:p-h-p-:/-/-f-i-l-t-e-r,并没有连续的 tp 子串,所以 不会被过滤

关键原理:

  • php://filter 是 PHP 的一个流封装协议,用于对文件内容进行编码/解码处理
  • convert.base64-encode 会将文件内容转为 Base64 编码后输出
  • 这样即使 flag.php 中包含 PHP 代码(会被服务器执行),也能以编码形式显示出来

构造 Payload:

http 复制代码
GET /secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php

五、base64解码获取 Flag

服务器返回的响应底部包含一段 Base64 编码的字符串

解码后得到 flag.php 的完整解释,从中可以看到flag:

相关推荐
点心的游戏开发世界2 小时前
GDScript 入门笔记(五):函数
笔记·游戏引擎·godot
wp123_14 小时前
硬件设计笔记:1μH功率电感选型实战——线艺 XFL4020-102MEC 与 国产 pin to pin MVLH4020-1R0M 详细参数测评
笔记·科技·硬件架构·硬件工程
zyf1044164 小时前
暑期实践日志 Day48:复盘大纲与知识点对照表,系统汇总整理成果
学习·计算机网络·剪辑·暑期实践·课题任务
摇滚侠4 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 Spring Boot 应用打包 阅读笔记 41
spring boot·笔记·后端
金立基包装胶水5 小时前
纸袋热封胶常见都有哪些问题?
大数据·笔记·其他
chnyi6_ya5 小时前
论文阅读笔记 | HoneyBee: Data Recipes for Vision-Language Reasoners
论文阅读·笔记
repetitiononeoneday5 小时前
【每日规划与反思】2026.9.4
笔记
江湖人称菠萝包5 小时前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter1-基础知识
windows·笔记
m4Rk_5 小时前
【论文阅读】Agent 记忆机制(61):CFGM——用粗到细的记忆落地贯通经验采集、知识蒸馏与在线纠错
论文阅读·人工智能·学习·开源·github
边境悍匪6 小时前
蜗牛学苑 Java 智能体学习 Day33|AOP 面向切面编程、日志技术思维导图复盘
学习