【PHP + 代码审计】文件包含

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

文件包含的作用

文件包含四种形式

文件加载原理

Include和require区别

文件加载路径

文件嵌套包含


文件包含:在一个PHP脚本中,去将另外一个文件(PHP)包含进来,去合作完成一件事情。

文件包含的作用

文件包含的意义:

1、 要么使用被包含文件中的内容,实现代码的共享(重用):向上包含(索要)

向上包含:在当前脚本要用某个代码之前包含别的文件

2、 要么自己有东西可以给别的文件使用,实现代码的共享(重用):向下包含(给予)

向下包含:在自己有某个东西的时候,需要别的脚本来显示(自己代码写完之后包含其他文件)

最大的作用:分工协作,每个脚本做的事情不一样,因此可以使用协作方式,让多个脚本共同完成一件事情。

文件包含四种形式

在PHP中文件的包含有四种形式(两种大形式)

  • Include:包含文件
  • Include_once:系统会自动判断文件包含过程中,是否已经包含过(一个文件最多被包含一次)
  • Require:与include相同
  • Require_once:以include_once相同
包含基本语法
include ‘文件名字’;
include(‘文件名字’);  //文件名字:路径问题

以上方式:是先包含文件,后使用文件中的内容(向上包含)

向下包含:先准备内容,然后包含另外的文件,在另外的文件中,使用当前的内容

文件加载原理

PHP代码的执行流程

1、 读取代码文件(PHP程序)

2、 编译:将PHP代码转换成字节码(生成opcode)

3、zendengine来解析opcode,按照字节码去进行逻辑运算

4、 转换成对应的HTML代码

文件加载原理:

1、 在文件加载(include或者require)的时候,系统会自动的将被包含文件中的代码相当于嵌入到当前文件中

2、 加载位置:在哪加载,对应的文件中的代码嵌入的位置就是对应的include位置

3、 在PHP中被包含的文件是单独进行编译的

PHP文件在编译的过程中如果出现了语法错误,那么会失败(不会执行);但是如果被包含文件有错误的时候,系统会在执行到包含include这条语句的时候才会报错。

Include和require区别

Include和include_once的区别:

Include系统会碰到一次,执行一次;如果对统一个文件进行多次加载,那么系统会执行多次;

Include_once:系统碰到多次,也只会执行一次。

Require和include的区别:本质都是包含文件,唯一的区别在于包含不到文件的时候,报错的形式不一样

Include的错误级别比较轻:不会阻止代码执行

Require要求较高:如果包含出错代码不再执行(require后面的代码)

文件加载路径

文件在加载的时候需要指定文件路径才能保证PHP正确的找到对应的文件。

文件的加载路径包含两大类:

1、 绝对路径

从磁盘的根目录开始(本地绝对路径)

Windows:盘符C:/路径/PHP文件

Linux:/路径/PHP文件

从网站根目录开始(网络绝对路径)

/:相对于网站主机名字对应的路径

Localhost/index.php -> E:/server/apache/htdocs/index.php

2、相对路径:从当前文件所在目录开始的路径

.|./:表示当前文件夹

../:上级目录(当前文件夹的上一层文件夹)

绝对路径和相对路径的加载区别

1、 绝对路径相对效率偏低,但是相对安全(路径不会出问题)

2、 相对路径相对效率高些,但是容易出错(相对路径会发生改变)

文件嵌套包含

文件嵌套包含:一个文件包含另外一个文件,同时被包含的文件又包含了另外一个文件。

嵌套包含的时候就很容易出现相对路径出错的问题:相对路径会因为文件的包含而改变(./和../):windows下面,每一个文件夹下都有.和..的文件夹。

张三 左边是 李四,李四左边是王五

张三把李四叫到自己的位置:李四与王五之间有两个位置,李四如果还按照左边伸手找王五就找不到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应对恶意IP攻击的有效方法

在当今数字化时代,网络攻击已经成为了互联网安全的重大挑战之一。恶意IP攻击是网络安全领域中的一种常见威胁,它可能导致数据泄露、服务中断、系统瘫痪等严重后果。因此,有效地应对恶意IP攻击至关重要。IP数据云将深入探讨如何应对恶意IP攻击…

精酿啤酒与日式料理的精致体验

当Fendi Club啤酒遇见日式料理,一场味蕾的精致盛宴就此展开。Fendi Club啤酒以其醇厚的口感和与众不同的麦香,为日式料理增添了别样的风味,而日式料理则以其精致的制作和丰富的口感,为啤酒带来了更多的层次感。 Fendi Club啤酒&am…

【论文笔记合集】ARIMA 非平稳过程通过差分转化为平稳过程

本文作者: slience_me 文章目录 ARIMA 非平稳过程通过差分转化为平稳过程文章原文具体解释详解 ARIMA 非平稳过程通过差分转化为平稳过程 文章原文 Many time series forecasting methods start from the classic tools [38, 10]. ARIMA [7, 6] tackles the foreca…

芯片公司SAP具体操作流程:从设计到生产的科技之旅

芯片公司作为现代科技产业的重要支柱,其运作涉及多个复杂环节。SAP作为一套企业资源计划系统,为芯片公司提供了从产品设计到生产制造的全方位管理支持。下面,我们就来详细科普一下芯片公司在SAP中的具体操作流程。 首先,芯片公司需…

阿里云服务器安全狗免费使用多引擎智能查杀引擎

云服务器具有按量付费、降低综合成本等诸多优势,受到很多企业的欢迎。 因此,目前使用的云服务器越来越多。 阿里云是目前云服务器中最具影响力的品牌,因此选择阿里云服务器的用户数量也是最多的。 那么阿里云服务器需要安装杀毒软件吗&#x…

CentOS 7安装MySQL及初始化操作教程

一、引言 MySQL是一款广泛使用的开源关系型数据库管理系统,适用于各种规模的应用场景。在CentOS 7系统中安装MySQL并进行初始化操作,可以为我们的应用程序提供稳定、可靠的数据存储服务。本文将详细介绍CentOS 7安装MySQL及初始化操作的步骤。 目录 一、…

C#使用SharpZipLib对文件进行压缩和解压

C#使用SharpZipLib对文件进行压缩和解压 使用SharpZipLib库 编写SharpZipLibHelper帮助类 using ICSharpCode.SharpZipLib.Zip;namespace SharpZipLib_Project {public class SharpZipLibHelper{/// <summary>/// 多个文件或文件夹压缩/// </summary>/// <pa…

序列化Serializable/Parcelable

定义 将一个对象转换成可存储或可传输的状态。&#xff08;对象转换成字节流的过程&#xff09; 作用 对象序列化后&#xff0c;可以在进程间、网络间进行传输&#xff0c;也可以做本地持久化存储 为什么要序列化 对于计算机来说&#xff0c;不认识对象只认识二进制。数据…

vue父子组件生命周期

父子组件的生命周期是一个嵌套的过程 渲染的过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted 子组件更新过程 父beforeUpdate->子beforeUpdate->子updated->父updated 父组件更…

行业认可 | 海云安上榜《2024年网络与信息安全行业全景图》多个领域

近日&#xff0c;深圳市网络与信息安全行业协会正式发布《2024年网络与信息安全行业全景图》。海云安凭借过硬的技术实力及成熟的网络与信息安全产品及服务获得行业认可&#xff0c;入围6大类目共计17项细分领域。包括&#xff1a; 业务安全&#xff08;软硬件开发安全、人工智…

MFC中字符串string类型和CString类型互转方法

在Microsoft Foundation Classes (MFC)中&#xff0c;CString是一个非常方便的类&#xff0c;用于处理C风格的字符串。有时&#xff0c;你可能需要在MFC的CString和C标准库中的std::string之间进行转换。下面是如何在两者之间进行转换的方法&#xff1a; CString转std::string…

C++向函数传递函数

函数指针的定义格式为&#xff1a; <函数返回类型> (*指针变量)(<函数形参列表>) 例如&#xff1a; 下面定义了一个函数指针变量fp: double (*fp)(int);这意味着fp可以指向返回类型为double,参数类型为int的任何函数 比如&#xff1a; double func(int x){...}获…

如何配置Log4j以便将日志信息输出到文件,并指定日志文件的格式?请解释Log4j中的PatternLayout,并给出一个常用的日志格式模式。

如何配置Log4j以便将日志信息输出到文件&#xff0c;并指定日志文件的格式&#xff1f; 配置Log4j以将日志信息输出到文件并指定日志文件的格式&#xff0c;通常涉及创建一个配置文件&#xff08;如log4j.properties或log4j2.xml&#xff09;&#xff0c;其中定义了Log4j的行为…

前端项目,个人笔记(一)【定制化主题 + 路由设计】

目录 1、项目准备 1.1、项目初始化 1.2、elementPlus按需引入 注&#xff1a;使用cnpm安装elementplus及两个插件&#xff0c;会报错&#xff1a;vueelement-plus报错TypeError: Cannot read properties of null (reading isCE ) &#xff0c;修改&#xff1a; 测试&#…

欧科云链做客Google Cloud与WhalerDAO专题论坛,畅谈Web3数据机遇

3月10日&#xff0c;由Google Cloud、WhalerDAO和baidao data主办&#xff0c;以Web3AI 2024 DATA POWER为主题的分享会在北京中关村举行。欧科云链高级研究员Jason Jiang受邀参加活动&#xff0c;带来“从链上数据发掘Web3时代的无限机遇”的主题分享。 Web3.0核心要素始终是链…

你不知道的 git 神器

有没有这种困惑&#xff0c;就是在一个分支上开发一堆功能&#xff0c;提交了很多 commit&#xff0c;但是突然上级告诉你&#xff0c;只上一个功能&#xff0c;你是不是束手无策&#xff0c;需要在这个分支上重新检出新分支&#xff0c;然后把不上的代码全部删掉。等后续需要的…

上位机图像处理和嵌入式模块部署(qmacvisual自己编写算法插件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;qmacvisual本身支持52个控件&#xff0c;但是指望这52个控件可以cover所有的应用场景&#xff0c;这也不太现实。另外&am…

自定义方法SQL注入器-DefaultSqlInjector

/*** 自定义Sql注入* author zy*/ public class SqlInjector extends DefaultSqlInjector {Overridepublic List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {// 注意&#xff1a;此SQL注入器继承了DefaultSqlInjector(默认注入器…

2024 年排名前 5 名的 Mac 数据恢复软件分享

如果您已经在 Mac 上丢失了数据并且正在寻找恢复数据的方法&#xff0c;那么您来对地方了。互联网上有超过 50 个适用于 Mac 的数据恢复程序。哪个是最好的 Mac 数据恢复软件&#xff1f;不用担心。本文列出了 5 款 Mac 数据恢复软件&#xff0c;可帮助您在 Mac OS 下恢复丢失的…

探索信号处理:低通滤波器的原理与应用

在信号处理领域&#xff0c;滤波器的应用至关重要&#xff0c;它能够帮助我们从复杂的信号中提取需要的信息&#xff0c;而低通滤波器则是其中一种被广泛应用的滤波器类型。本文旨在深入探讨低通滤波器的基本原理、主要类型以及在实际应用中的作用和实现方式。 ### 1. 低通滤波…