网络安全实战系列收集了网络安全类中的各种常见漏洞。作者根据自己在网络安全领域的学习和工作经验,总结分析了漏洞的原理和利用,致力于漏洞的准确性和丰富性,希望能够帮助网络安全工作者和网络安全学习者,降低获取知识的时间成本。
0x01文件包含介绍。
当服务器执行一个PHP文件时,PHP代码可以通过文件包含函数加载到另一个文件中,这将为开发者节省大量时间。也就是说,您可以为所有要引用的网页创建一个标准的标题或菜单文件。如果页眉需要更新,只需更新一个包含的文件,或者当你在网站上添加新页面时,只需修改菜单文件(而非更新所有页面的链接)。
这个文件包含函数。
包含函数的PHP文件有四种:
要求()
require_once()
包括()
include_once()
include和require的主要区别在于,如果include出了问题,就会发出警告,程序会继续正常运行;如果require函数出了问题,就会直接报告错误,退出程序。
include_once()和require_once()这两个函数与前两个函数的区别在于,它们只包含一次,这适用于在脚本执行过程中可能包含多次同一文件的情况,并且您希望确保它们只包含一次,以避免函数重定义和变量重新分配等问题。
脆弱的原因
该文件包含函数加载参数,没有过滤或严格定义,可由用户控制。它包含其他恶意文件,导致意外代码执行。
例子代码。
举例来说:
$_GET['filename'参数的开发人员未经严格筛选,直接引入include函数。攻击者可以修改$_GET['filename'的值,进行意外操作。