当前位置: 首页 > news >正文

[HelloCTF]PHPinclude-labs超详细WP-Level 1-FILE协议

源码分析

  • <?php 
    	include("get_flag.php");
    	isset($_GET['wrappers']) ? include("file://".$_GET['wrappers']) : '';
    	highlight_file(__FILE__);
    ?>
    
  • 第一句 include("get_flag.php");, 使代码包含了 get_flag.php 的内容

    • 大概是生成 Flag 之类的代码
  • 第二句与上一关差不多, 通过三目运算的方式, 简写了一个判断语句

    • 检测是否 GET 传入 wrapper 参数, 如果有就传给 include() 参数执行

      • 不过这里对 wrapper 参数做了点修改, 才交给 include()

      • "file://".$_GET['wrappers']

      • 增加了 file协议标志

  • 最后一句就是显示源码

解题分析

  • 首先, 题目开头告诉当前文件路径 /var/www/html

    • 这个在现实场景中可以根据根据一般情况部署的目录去猜测
  • 并且, 题目环境中, 关闭了allow_url_fopen=Off allow_url_include=Off, 导致了不能使用上一关的远程文件包含

  • 再者, include() 被限制使用了 file协议, 故这里只能尝试 file协议 来达到文件包含

  • file:// 协议

    • include("filename") 
      <=> 
      include("file://" . __DIR__ . "/filename"); 
      
    • 不过这里只能使用绝对路径

  • 然后探姬在题目说提到了 当前目录下有 phpinfo.txt flag.php(包含存储flag的变量), 在根目录下有 flag 文件(包含flag)

尝试包含文件

  • 包含 phpinfo.txt

    • 靶机地址/?wrappers=/var/www/html/phpinfo.txt
      
  • 包含 flag.php

    • 因为这里并没有输出flag变量 的代码, 所以包含了也没有变化

    • 其实打开靶机源文件会发现, flag.php 其实空的

解题步骤

  • 跟上述方法一样, 改为包含 根目录下的 flag 就可以了

  • 靶机地址/?wrappers=/flag
    

相关文章:

  • Qt Widgets、Qt Quick
  • AI建模智能生成:从2D到3D,AI只需一步!
  • C语言——结构体、联合、枚举
  • DEEPSEEK可能是 “特洛伊木马“:论第三方数据模型的潜在安全威胁
  • 基于x11vnc的ubuntu远程桌面
  • Elasticsearch分页查询、关键词高亮与性能优化全解析
  • LeetCode热题100JS(54/100)第十天|124|200|994|207|208
  • 数图亮相第三届全国生鲜创新峰会,赋能生鲜零售数字化转型
  • 【力扣100】简要总结之哈希
  • 配置blender的python环境
  • 红黑树的部分实现(C++)
  • IPD解读——IPD重构产品研发与产品管理
  • C程序设计(第五版)及其参考解答,附pdf
  • Android开源库——RxJava和RxAndroid
  • 前端传参+后端接参对照
  • java项目40分钟后token失效问题排查(40分钟后刷新页面白屏)
  • Qt for WebAssembly程序中文乱码问题处理过程
  • LLVM学习-- 构建和安装
  • Leetcode 3485. Longest Common Prefix of K Strings After Removal
  • 较为完善的搜索函数
  • 美国参议院投票通过戴维·珀杜出任美国驻华大使
  • 成都世运会倒计时100天,中国代表团运动员规模将创新高
  • 准80后湖北省财政厅副厅长徐晶华已调任襄阳市副市长
  • 4月人文社科联合书单|天文学家的椅子
  • 一位排球青训教练的20年时光:努力提高女排球员成才率
  • 深圳宝安区一宗涉宅用地中止出让,起始总价86.27亿元