• 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://

  • 相关阅读:
    A/B test模块使用以及配置
    Linux下的tar压缩解压缩命令详解
    php mysql转义特殊字符的函数(转)
    cas server + cas client 单点登录 原理介绍
    php二维码的生产以及下载
    shiro 获取已经登录的用户
    Sql 根据多条件查询重复的数据 MySQL删除重复数据
    js base64 转PDF并下载,js baser64转图片并下载
    当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
    我的博客初始“话”
  • 原文地址:https://www.cnblogs.com/hf99/p/9740807.html
Copyright © 2020-2023  润新知