先来看看什么是文件包含
在开发的过程中,遇到一些需要经常重复使用的代码,如果每次都重新写入,会造成很大的麻烦,所以,我们会将这些需要大量使用的重复代码写入一个文件中,在项目中通过函数引入这个文件,那么就可以做到代码的插入。
这些代码由几个函数引入
1.include()函数
include()函数,是临时加载的,在读到该函数时,才会包含里面的文件。include()在执行的时候如果:
"合法代码"
include('XXXX') 假如include读取的文件不存在,他的上下两个"合法代码"都会执行,只有它自己报错
"合法代码"
2.require()函数
require()函数是预先加载好了的,在读取该函数之前,就已经包含里面的文件内容,require()在执行的时候如果:
"合法代码"
require('XXXX') require执行前会将读取文件中的代码提取出来和上下的代码拼接在一起执行,然后如果文件内的代码有错误则全局都错误
"合法代码"
3.include_once()
该函数和include()没有什么太大的区别,只是会去检查该文件是否已经进行过包含
4.require_once()
同理该函数和require()也没有太大的区别,同样也是会去检查该文件是否已经进行过包含.
php文件包含通常会和php伪协议挂钩我们来了解下php伪协议(只讲比较重要的常用的几个)
1.php://input
是个可以访问原始数据的只读流,可以在post中传入数据并当作代码执行,条件为allow_url_include=On
allow_url_fopen-Off/On 使用例子? file=php://input POST:phpinfo();
2.php://filter
是一个原封装器,用于过滤读取的数据流,其中有几个参数,resource参数必选,用于选取读取的数据流,re

本文介绍了PHP中的文件包含函数,如include、require、include_once和require_once的使用和区别,以及PHP伪协议的概念,包括php://input、php://filter、zip://和data://。还探讨了在CTF挑战中利用这些知识的实例,强调了安全性问题,特别是在allow_url_include设置为开启时的潜在风险。
最低0.47元/天 解锁文章
3525

被折叠的 条评论
为什么被折叠?



