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

[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
    

http://www.kler.cn/a/592025.html

相关文章:

  • fastapi+tcp+android在线聊天
  • Vue3是如何利用Proxy进行双向数据绑定的(二)?
  • 【开源免费】基于SpringBoot+Vue.JS智慧生活商城系统(JAVA毕业设计)
  • 从Excel文件中读取数据
  • Spring Boot 应用的接口访问从 HTTP 改为 HTTPS
  • 16. C语言二级指针
  • Kali Linux汉化教程:轻松设置中文界面
  • 【MySQL】关闭外键约束检查
  • 操作系统知识点32
  • Linux 部署 Spring Boot 项目, Web项目(2025版)
  • 分页优化之——游标分页
  • 微服务》》四个问题
  • 非洲能源商会:架起中非能源合作的桥梁
  • 家里宽带上网无线路由器配置方案总结(有线路由器+多个无线WIFI)
  • java-正则表达式-集合-泛型
  • MySQL :参数修改
  • GoT:当AI学会“先想后画“,视觉生成的推理革命来了
  • AI爬虫 :Crawl4AI的安装和详细使用案例(开源 LLM 友好型网络爬虫)
  • Odoo 18 中的列表(list) 、表单(Form)、数据透视表、图表视图、看板视图、活动视图、日历视图等综合应用实例
  • STM32配套程序接线图