【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下面,每一个文件夹下都有.和..的文件夹。

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

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 11:24:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 11:24:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 11:24:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 11:24:02       20 阅读

热门阅读

  1. vuex怎么防止数据刷新丢失?

    2024-03-14 11:24:02       19 阅读
  2. Qt+FFmpeg+opengl从零制作视频播放器-12.界面美化

    2024-03-14 11:24:02       20 阅读
  3. 设计模式 — — 工厂模式

    2024-03-14 11:24:02       17 阅读
  4. - 概述 - 《设计模式(极简c++版)》

    2024-03-14 11:24:02       17 阅读
  5. c++qt函数中如何返回一个类对象或对象的引用

    2024-03-14 11:24:02       23 阅读
  6. Nginx和Ribbon实现负载均衡的区别

    2024-03-14 11:24:02       20 阅读
  7. 【OJ】K 个一组翻转链表

    2024-03-14 11:24:02       21 阅读
  8. Stream流

    Stream流

    2024-03-14 11:24:02      17 阅读