php本地文件包含和远程文件包含

前期

phpstudy(php + mysql + apache)

目的

程序员在编写程序时,常常把需要重复使用的一些代码,写在一个单独的文件中,当需要调用这些代码时,再其他文件中包含调用代码文件,这样可以提高编程的效率.

包含函数

在php中包含调用函数:

include()require()include_oncerequire_once()

函数作用

include函数:如果文件不存在、报错、继续执行

1.php
<?php
echo '开始';
include '2.php';
echo '结束';
?>

2.php
<?php
echo '文件包含';
?>

在这里插入图片描述

1.php
<?php
echo '开始';
include '3.php';
echo '结束';
?>

3.php不存在

在这里插入图片描述
require函数:如果文件不存在、报错、不执行

1.php
<?php
echo '开始';
require '2.php';
echo '结束';
?>

2.php
<?php
echo '文件包含';
?>

在这里插入图片描述

1.php
<?php
echo '开始';
require '3.php';
echo '结束';
?>

3.php不存在

在这里插入图片描述
其他两个和上面一样,不过只能包含一次

类型

在使用文件包含函数时,指定的文件可以是本地的文件,也可以时远程指定URL连接文件,前者本地文件包含,后者为远程文件包含。
本地(LFI)
远程(RFI)

本地文件包含

index.php
<?php
echo "Hello World";
?>

1.php
<?php
if(@$_GET['page']){
    
    
	include $_GET['page'];
}else{
    
    
include 'index.php';
}
?>

2.php
<?php
echo '文件包含';
?>

判断GET传参中的page有没有值,如果有就包含该值,没有就包含index.php

http://127.0.0.1/1.php

在这里插入图片描述

http://127.0.0.1/1.php?page=2.php

在这里插入图片描述

远程文件包含

在默认的php配置文件中allow_url_fopen功能是被激活的,程序员可以用URL链接的形式来指定要被包含的文件,进行远程文件包含调用。

需要说明的是,进行RFI攻击需要同时具备三个条件:

1.allow_url_fopen = On    (默认开启)
2.allow_url_include = On  (默认关闭)
3.被包含的变量前没有目录的限制

一般在php.ini中设置1、2就可以了

http://127.0.0.1/1.php?page=http://127.0.0.1/2.php

在这里插入图片描述

利用

读取文件

http://127.0.0.1/1.php?page=E:\1\1.txt

在这里插入图片描述

图片马

http://127.0.0.1/1.php?page=1.png

在这里插入图片描述

后文

代码审计文件包含可以搜索这四个函数。

关注小白学习安全和各种pdf类书籍的公众号。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/p_utao/article/details/109861043