伪协议知识汇总

伪协议常常用于文件包含漏洞之中。
在 php 中能够造成文件包含的函数有 include、require、include_once、require_once、
highlight_file、show_source、file_get_contents、fopen、file、readfile

函数

include 函数

可以放在 PHP 脚本的任意位置,一般放在流程控制的处理部分中。当 PHP 脚本执行到 include 指定引入的文件时,才将它包含并尝试执行。这种方式可以把程序执行时的流程进行简单化。当第二次遇到相同文件时,PHP 还是会重新解释一次,include 相对于 require 的执行效率下降很多,同时在引入文件中包含用户自定义函数时,PHP 在解释过程中会发生函数重复定义问题。include 载入成功后,返回 1,失败则返回 false。

require 函数

require 函数一般放在 PHP 脚本的最前面,PHP 执行前就会先读入 require 指定引入的文件,包含并尝试执行引入的脚本文件。require 的工作方式是提高 PHP 的执行效率,当它在同一个网页中解释过一次后,第二次便不会解释。但同样的,正因为它不会重复解释引入文件,所以当 PHP 中使用循环或条件语句来引入文件时,需要用到 include。require 载入成功返回 1,失败无返回值。

include_once 和 require_once 函数

分别与 require / include 作用相同,不同的是他们在执行到时会先检查目标内容是不是在之前已经导入过,如果导入过了,那么便不会再次重复引入其同样的内容。

highlight_file 函数

highlight_file() 函数对文件进行语法高亮显示。

语法:highlight_file(filename,return) —— filename:必需。要进行高亮处理的 PHP 文件的路径。return:可选。如果设置 true,则本函数返回高亮处理的代码。

该函数通过使用 PHP 语法高亮程序中定义的颜色,输出或返回包含在 filename 中的代码的语法高亮版本。如果 return 参数被设置为 true,那么该函数会返回被高亮处理的代码,而不是输出它们。否则,若成功,则返回 true,失败则返回 false。许多服务器被配置为对带有 phps 后缀的文件进行自动高亮处理。例如,在查看 example.phps 时,将显示该文件被语法高亮显示的源代码。要启用该功能,请把 AddType application/x-httpd-php-source .phps 添加到 httpd.conf。

show_source 函数

该函数是 highlight_file 函数的别名。

file_get_contents 函数

file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

file 函数

file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。
20210508123132

fopen 函数

readfile 函数

伪协议

php 伪协议

需要开启 allow_url_fopen 的:php://input、php://stdin、php://memory 和 php://temp

不需要开启 allow_wrl_fopen 的:php://filter

在 CTF 中经常使用的是 php://filter 和 php://input

php://filter 用于读取源码,php://input 用于执行 php 代码

php://input 需要 post 请求提交数据

php://filter 可以 get 提交?a=php://filter/read=convert.base64-encode/resource=xxx.php

data 协议

php5.2.0 起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是 PHP 代码,就会执行代码

使用方法:data://text/plain;base64,xxxx(base64 编码后的数据)

data 伪协议只有在 php<5.3 且 include=on 时可以写木马。

file 协议

file://用于访问本地文件系统

用法:file:// [文件的绝对路径和文件名]

参考链接:

https://www.cnblogs.com/lishanlei/p/9339938.html

https://www.w3school.com.cn/php/func_misc_highlight_file.asp

https://www.w3school.com.cn/php/func_misc_show_source.asp

https://www.w3school.com.cn/php/func_filesystem_file_get_contents.asp

https://www.w3school.com.cn/php/func_filesystem_file.asp

https://www.runoob.com/php/func-filesystem-fopen.html

https://www.w3school.com.cn/php/func_filesystem_readfile.asp

https://www.cnblogs.com/-an-/p/12372220.html

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zack_snair

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值