php文件包含
文章目录
- 基础概念
- php伪协议
- 什么是协议
- 协议的格式
- php中的协议
- file协议
- http协议
- ftp协议
- php://input协议
- php://filter协议
- php://data协议
- php文件上传机制
基础概念
文件包含,相当于c语言中的#include,即通过头文件就可以调用文件中的代码
文件包含最基础的作用,就是读取非php类型的文件
php常见的文件包含语言结构
- include ‘path’,包含这个文件,如果文件没了也不影响,继续往下执行
- require:包含必须成功,失败则会报错
- require_once:与 require 相似,都是用于包含并执行指定的 PHP 文件,但它确保该文件在脚本中只会被包含 一次。如果该文件已经被包含过,require_once 就不会再包含它。
- include_once:类似require_once
php伪协议
伪协议即只能在php里面用,在其他地方用不了
什么是协议
协议的格式
协议头://内容
php中的协议
file协议
-
相对路径和绝对路径
-
. . / ../ ../:上层目录
- 上层目录的特点
- 每个目录都有上层目录
- 根目录的上层目录是根目录
- php的文件整理特性:www/html/…/==www/
http协议
- file_get_contens()函数,给定url地址,通过http协议可以将内容读取
- include ‘http://’同样可以包含远程地址
ftp协议
默认21端口,进行文件传输
php://input协议
在发的http请求中呈现数据最原始的形式,如果没有php标记,就会当作文本文档呈现,如果有php语法标记,则会执行代码的内容
php://filter协议
通过协议自带的编码解码绕过
file=php://filter/write=convert.base64-decode/resource=1.php
将解码后的内容写入1.php文件
同样可以用write=string.rot13绕过死亡代码
php://data协议
到这里感觉到了各协议其实都可以用于执行自己写的php代码,以data协议为例
data://,<?php phpinfo(); ?>
php文件上传机制
可以强制向网页上传文件,上传的文件存放在/tmp/php???的一个地方,临时文件在脚本执行完后就被删除,所以应该用bp抓包,并将最后一位匹配大写字母[@-[]