zoukankan      html  css  js  c++  java
  • PHP文件包含小结

    协议

    各种协议的使用有时是关键

    file协议

    file后面需是///,例如file:///d:/1.txt

    也可以是file://e:/1.txt,如果是在当前盘则可以file:///1.txt

    如果是php文件,则文件内容通过查看源码的方式读取

    文件名可以通过>替代

    zip://协议

    例:zip://e:1.zip#1.txt(#需转为%23)路径必须为绝对路径

    phar://协议

    例:phar://1.phar/1.php

    可以读取文件的函数

    函数的使用不当可能引发问题

    include函数

    通过get方法或post方法include的文件首先是从当前文件夹下开始读取,此时目录穿越漏洞可以用

    不能够读取自己,否则会出现逻辑错误

    如果直接包含一个php文件,则只会显示其中在标签外的内容,以及php代码输出的内容

    若要读取php文件的内容,则需要将其编码,例:php://filter/read=convert.base64-encode/resource=123.php

    使用>时如果有多个文件符合,只会输出第一个

    highlight_file函数

    将文件以内置的颜色输出,可以输出php文件,也可以输出其他文件
    如果第二个参数return设置为true,那么文件内容将不会输出,而是返回一个字符串

    show_source函数

    上面函数的别名,功能是一样的

    file_get_contents函数

    将一个文件读入一个字符串
    包含的文件需要在源码中才能看到,或者使用伪协议将其base64加密

    fopen函数

    因为返回的是一个指针,所以不能够直接读取,需要用fgets或者fread读取指针指向的内容,或者使用fpassthru读取指针指向剩下的内容

    readfile函数

    功能是读取一个文件到缓冲区,返回一个整数(为文件的内字符的长度)

    file函数

    功能是将一个文件读入数组,数组的键是行数(从0开始),数组的值为该行的内容

    截断

    include($_GET['file']."txt");
    

    一般的文件包含都是类似这样的情况,对于这种情况,就要进行截断

    ?,#

    包含一个远程文件或者是url时使用

    %00

    在php版本小于5.2时可用

    :

    仅在windows环境可用

    使用协议

    例如上面的zip://,phar://

  • 相关阅读:
    zookeeper简介
    LRU和LFU的区别和使用场景
    windows环境搭建Webpack5 + Vue3项目实践
    Javascript 导出文件(post、get请求)
    解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法
    2021 ASP.NET Core 开发者路线图
    华为云云原生王者之路钻石集训营--学习笔记
    Kubernetes全栈架构师(资源调度上)--学习笔记
    Kubernetes全栈架构师(基本概念)--学习笔记
    Kubernetes全栈架构师(Docker基础)--学习笔记
  • 原文地址:https://www.cnblogs.com/hf99/p/9740807.html
Copyright © 2011-2022 走看看