web——warmup——攻防世界

这道题还是没有做出来。。,来总结一下

1.ctrl+U显示源码

2.看见body里有source.php

打开这个source.php

看见了源码

  1. highlight_file(FILE);

    • 这行代码用于高亮显示当前文件的源码,适合调试和学习,但在生产环境中通常不需要。
  2. class emmm

    • 定义了一个名为 emmm 的类。
  3. public static function checkFile(&$page)

    • 这是一个静态方法,名为 checkFile,用于检查传入的 $page 参数是否安全。
  4. $whitelist = "source"=\>"source.php","hint"=\>"hint.php";

    • 定义一个白名单数组,只允许 source.php 和 hint.php 这两个文件被包含。
  5. if (! isset(page) \|\| !is_string(page)) { ... }

    • 检查 $page 是否被设置且是字符串。如果不是,则返回提示信息并结束函数。
  6. if (in_array(page, whitelist)) { ... }

    • 检查 $page 是否在白名单中。如果是,返回 true。
  7. $_page = mb_substr(...)

    • 这段代码处理 $page,去掉查询字符串(? 之后的部分),并检查处理后的值是否在白名单中。
  8. _page = urldecode(page);

    • 对 $page 进行 URL 解码,然后再次进行同样的白名单检查。
  9. echo "you can't see it"; return false;

    • 如果 $page 不在白名单中,返回提示信息并结束函数。
  10. if (! empty($_REQUEST'file') ... )

    • 检查请求中是否有 file 参数,且该参数是字符串。如果满足条件,调用 checkFile 方法。
  11. include $_REQUEST'file';

    • 如果检查通过,包含用户请求的文件。
  12. else { echo "<br><img src="..." />"; }

    • 如果没有通过检查,则显示一张图片。

3.打开hint.php看看

发现flag在文件ffffllllaaaagggg里

4.通过学习,flag文件一般在根目录里,一般用4层返回

source.php?file=hint.php?/../../../../ffffllllaaaagggg

得到flag

相关推荐
金銀銅鐵8 小时前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
传奇开心果编程9 小时前
【Flutter踩坑排雷】第25课:ScrollController 误用坑|跳转失效、监听泄漏与“控制器未附加”
android·flutter·ios·移动开发·跨平台·dart·声明式ui
吴名氏.10 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
.痞老板.11 小时前
java ee--多线程(进阶)
java·java-ee
treasure14011 小时前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
深入云栈12 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
jay神12 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
屏什么录12 小时前
长时间录屏中途崩溃:MP4 打不开的 6 种救回方案与参数设置
前端·音视频开发
慕容雪_12 小时前
Capacitor8-Android打包完整手册
android·打包·capacitor
code_Bo13 小时前
不只命令行:我把跨 Agent 会话同步做成了桌面应用
前端·javascript·后端