PHP的文件包含函数有两类,分三种:1
2file_get_contents()
include()/include_once() require/require_once()
第一种用于获取文件的数据,第二种用于包含并执行代码与读取文件两种功能
php写文件的函数1file_put_contents()
基本的思路就是用来写shell吧,不过会有各种限制,但是结合伪协议就可以简单绕过了
file_get_contents()
这个函数经常用于获取文件内容,尤其是php文件的代码,配合伪协议中的元封装器php://filter/convert.base64-encode/resource=class.php
几乎已经成了公认的文件获取姿势
include() / require()
首先说下两者的唯一不同include是当代码执行到它的时候才加载文件,发生错误的时候只是给一个警告,然后继续往下执行
require是只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行
此函数利用的原理
把参数作为一个php文件去运行,所以基本使用方法有拿运行环境与拿输出代码两种作用
这种文件包含利用的目的无外乎以下几种:使用php://filter/convert.base64-encode/resource=xxx来读文件源码
包含shell代码文件(自己上传的,写的等各种方式),使代码具有php的执行环境
包含使用伪协议自定的数据流,常用于写shell
包含关键文件,获得该文件的输出结果与执行环境(就比如说关键文件中的变量引入)