[HelloCTF]PHPinclude-labs超详细WP-Level 1-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
    

你可能感兴趣的:(WP,网络安全,web安全,php)