file_get_contents bugku php伪协议

这道题很好,记录一下。

get填写2个变量,变量ac非空,且ac的值等于读取的fn文件内容。所以要么读取服务器上已存在的文件,要么构造一个文件

解题思路一:

dirsearch扫描目录,发现存在/flag.txt ,访问得到文本内容bugku,于是

?/ac=bugku&fn=flag.txt

解题思路二:

看到file_get_contents立刻想到伪协议绕过。

php://input允许读取原始的http post数据流,直接ac=post值即可
?ac=1&fn=php://input

data:// 允许将实际数据直接嵌入到url字符串本身中,而不是提供一个指向外部资源的链接,ac=data://即可
?ac=1&fn=data://,1

data:[<mediatype>][;base64],<data>

将其分解:

  1. data: - 协议标识符,固定开头。

  2. [<mediatype>] - 可选的媒体类型(MIME type)。例如 text/plainimage/pngapplication/json。这用于说明嵌入数据的类型。如果省略,默认值为 text/plain;charset=US-ASCII

  3. [;base64] - 可选的标识符。如果出现,则表示 <data> 部分是用 Base64 编码的。这是关键所在,因为它允许在数据中安全地使用特殊字符(如 <?php ?>)。

  4. , - 一个逗号,用于分隔头部和数据部分。

  5. <data> - 实际的数据内容。

php://filter读取文件内容

该协议处理器会识别php://filter/...这一部分,并将其后面的resourse=指定的路径作为要读取的文件。可以用来绕过一些路径过滤代码,直接读取文件

最常用的情况是用base64读取

php://filter/convert.base64-encode/resource=/etc/passwd

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值