伪协议的学习
伪协议常常用于文件包含漏洞之中。
在php中能够造成文件包含的函数有include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile
0x01 函数
1.include函数
可以放在PHP脚本的任意位置,一般放在流程控制的处理部分中。当PHP脚本执行到include指定引入的文件时,才将它包含并尝试执行。这种方式可以把程序执行时的流程进行简单化。当第二次遇到相同文件时,PHP还是会重新解释一次,include相对于require的执行效率下降很多,同时在引入文件中包含用户自定义函数时,PHP在解释过程中会发生函数重复定义问题。include载入成功后,返回1,失败则返回false。
2.require函数
require函数一般放在PHP脚本的最前面,PHP执行前就会先读入require指定引入的文件,包含并尝试执行引入的脚本文件。require的工作方式是提高PHP的执行效率,当它在同一个网页中解释过一次后,第二次便不会解释。但同样的,正因为它不会重复解释引入文件,所以当PHP中使用循环或条件语句来引入文件时,需要用到include。require载入成功返回1,失败无返回值。
3.include_once和require_once函数
分别与require / include作用相同,不同的是他们在执行到时会先检查目标内容是不是在之前已经导入过,如果导入过了,那么便不会再次重复引入其同样的内容。
4.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。
5.show_source函数
该函数是highlight_file函数的别名。
6.file_get_contents函数
file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
7.file函数
file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。
8.fopen函数
9.readfile函数
0x02 伪协议
1.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
2.data协议
php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码
使用方法:data://text/plain;base64,xxxx(base64编码后的数据)
data伪协议只有在php<5.3且include=on时可以写木马。
3.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