文件包含:
服务器执行php文件时,能够通过包含函数加载另一个文件中的php代码,当被包含的文件中存在木马时,也就意味着木马程序会在服务器上加载执行
在php中文件包含函数分为四个:
require(),require_once(),include(),include_once()
其中require和include的区别是,require出现错误的时候,会直接报错并退出程序的执行,而include包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行。
Request_once和include_once则只包含一次
不管他们里面包含的是什么,图片也好,文本也好,都会被函数当成php代码解析,所以文件包含运用不当回给服务器带来极大的威胁。
文件文件包含常常需要用到一些php伪协议:
1、 php://filter 可以对文件进行base64的形式读取
需要allow_url_include=on
常用语法;
?file=php://filter/convert.base-encode/resource=xxx.php
2、 php://input可以进行代码执行,写入木马,利用post传参
需要allow_url_fopen和allow_url_include=on
3、 file://可以读取系统文件
4、 data://伪协议 数据流封装器
利用了流的概念,和php://input类似,同样可以造成代码执