无题
文件包含
文件包含
一,概述
程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件调用的过程一般被成为文件包含。其中PHP的文件包含是通过include()、require()、include_once()和require_once()四个函数实现的。
| 函 数 | 包含失败 | 特点 |
|---|---|---|
| include() | 返回一条警告 | 报错也会继续运行 |
| require() | 强行中断 | 代码在报错处不再运行 |
| include_once() | 返回一条警告 | 除了原有include()功能,还会做once检测,如果文件曾经已经被包含过,不在包含 |
| require_once() | 强行中断 | 除了原有require()功能,还会做once检测,防止文件反复包含 |
任意文件读取


例题:buuctf: BUU LFI COURSE 1
当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。在本题的PHP代码中即可看到include函数
因为文件路径可控,当输入系统的密码文件所在路径时,内容会输出出来
在url后构造
?file=/flag

还可以加一些不存在的目录名,进行穿越、绕过
加入一个不存在的目录名,然后利用../返回上级目录继续操作即可。

通过php://查看源代码
php://
php:data://
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 事在人为!
评论
