好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

关于globphp的信息

很多站长朋友们都不太清楚globphp,今天小编就来给大家整理globphp,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP绕过open_basedir限制操作文件的三种方法 2、 PHP文件读取问题 scandir函数和glob函数,那个效率更高? 3、 php如何读取某目录下的所有同类型文件 4、 PHP中glob()函数查找指定后缀名的文件 PHP绕过open_basedir限制操作文件的三种方法

由于open_basedir的设置对system等命令执行函数是无效的,所以我们可以使用命令执行函数来访问限制目录。

我们首先创建一个目录

且在该目录下新建一个1.txt 内容为abc

再在该目录下创建一个目录命名为b

并且在该目录下创建一个1.php文件内容为

且在php.ini中设置好我们的open_basedir

我们尝试执行1.php看看open_basedir是否会限制我们的访问

执行效果如图

很明显我们无法直接读取open_basedir所规定以外的目录文件。

接下来我们用system函数尝试绕open_basedir的限制来删除1.txt

编辑1.php为

先来看看执行1.php之前的文件情况

执行1.php之后

我们先来了解一下symlink函数

symlink函数将建立一个指向target的名为link的符号链接,当然一般情况下这个target是受限于open_basedir的。

由于早期的symlink不支持windows,我的测试环境就放在Linux下了。

测试的PHP版本是5.3.0,其他的版本大家自测吧。

在Linux环境下我们可以通过symlink完成一些逻辑上的绕过导致可以跨目录操作文件。

我们首先在/var/www/html/1.php中 编辑1.php的内容为

接着在/var/www/中新建一个1.txt文件内容为

再来设置一下我们的open_basedir

在html目录下编辑一个php脚本检验一下open_basedir

执行看下。

意料之中,文件无法访问。

我们执行刚才写好的脚本,1.php

此时tmplink还是一个符号链接文件,它指向的路径是c/d,因此exploit指向的路径就变成了

由于这个路径在open_basedir的范围之内所以exploit成功建立了。

之后我们删除tmplink符号链接文件再新建一个同名为tmplink的文件夹,这时exploit所指向的路径为

由于这时候tmplink变成了一个真实存在的文件夹所以tmplink/变成了1.txt所在的目录即/var/www/

然后再通过访问符号链接文件exploit即可直接读取到1.txt的文件内容

当然,针对symlink()只需要将它放入disable_function即可解决问题,所以我们需要寻求更多的方法。

glob是php自5.3.0版本起开始生效的一个用来筛选目录的伪协议,由于它在筛选目录时是不受open_basedir的制约的,所以我们可以利用它来绕过限制,我们新建一个目录在/var/www/下命名为test

并且在/var/www/html/下新建t.php内容为

执行结果如图:

成功躲过open_basedir的限制读取到了文件。

PHP文件读取问题 scandir函数和glob函数,那个效率更高?

scandir比较传统,只扫描指定的路径,不解析通配符。列目录时效率较高。

glob更高级抽象。使用简单,适合搜索文件。

php如何读取某目录下的所有同类型文件

PHP使用函数opendir、readdir、closedir来实现文件夹的操作,下面以一个最基本的例子来作为入门介绍:

<?php

//获取某目录下所有文件、目录名(不包括子目录下文件、目录名)  

    $dir='C:/Users/';

    $handler = opendir($dir);  

    while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况  

        if ($filename != "."  $filename != "..") {  

                $files[] = $filename ;  

           }  

       }  

    }  

    closedir($handler);  

       

//打印所有文件名  

    foreach ($filens as $value) {  

        echo $value."<br />";  

    }  

?>

上面的代码显示c:\users文件夹里面的所有的文件和文件夹,忽略.和..两个特殊含义的文件夹,程序把所有文件和文件夹名称扫描保存到数组里面,然后显示。

如果你需要对文件进行过滤,例如只处理*.xls文件,可以在过滤.和..的地方添加代码。例如:

if (substr($filename,-4)=='.xls'){

当你理解了上面的代码之后,你就能编写扫描子文件夹、以及子 文件夹里面文件的方法了。基本思路是使用递归,下面我给出一个简单的例子:

function get_allfiles($path,$files) {  

    if(is_dir($path)){  

        $dp = dir($path);  

        while ($file = $dp ->read()){  

            if($file !="."  $file !=".."){  

                get_allfiles($path."/".$file, $files);  

            }  

        }  

        $dp ->close();  

    }  

    if(is_file($path)){  

        $files[] =  $path;  

    }  

}  

     

function get_filenamesbydir($dir){  

    $files =  array();  

    get_allfiles($dir,$files);  

    return $files;  

}  

     

$filenames = get_filenamesbydir("c:/users/");  

//打印所有文件名,包括路径  

foreach ($filenames as $value) {  

    echo $value."<br />";  

}

这个例子使用dir类来编写,实际上用opendir、readdir、closedir来写也是相同的。

PHP中glob()函数查找指定后缀名的文件

建议参考以下代码

A simple function that find all files by extension an return it by an array.

<?php

function findFiles($directory, $extensions = array()) {

    function glob_recursive($directory, $directories = array()) {

        foreach(glob($directory, GLOB_ONLYDIR | GLOB_NOSORT) as $folder) {

            $directories[] = $folder;

            glob_recursive("{$folder}/*", $directories);

        }

    }

    glob_recursive($directory, $directories);

    $files = array ();

    foreach($directories as $directory) {

        foreach($extensions as $extension) {

            foreach(glob("{$directory}/*.{$extension}") as $file) {

                $files[$extension][] = $file;

            }

        }

    }

    return $files;

}

var_dump(findFiles("C:", array (

    "jpg",

    "pdf",

    "png",

    "html"

)));

?>

把C:改成你需要查找的路径,里面放后缀,测试可用。

关于globphp的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于关于globphp的信息的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did198235
更新时间:2023-04-26   阅读:13次

上一篇: php手机url跳转 php url函数

下一篇:php左截字符 php截取字符

相关资讯

最新资料更新

  • 1.php仿应用商店 php android 应用
  • 2.php蓝色的代码 html颜色代码
  • 3.phpapp页面 php app
  • 4.php物业台账公式 物业台账是什么意思
  • 5.php网络通信 php通信协议
  • 6.php项目详解 php项目总结
  • 7.phpmp3播放 php播放器本地视频
  • 8.php网站设计素材 php网站制作
  • 9.怎么开发一个php项目 php项目开发流程
  • 10.php大数据算法 php如何处理大数据
  • 11.php比较数组差集 php比较多个数组中是否有重复值
  • 12.php接收tcp数据 php tcp udp
  • 13.iisphpma的简单介绍
  • 14.vip影院php后台版 vip影视电视剧电影
  • 15.php保存url数据 php获取url参数
  • 16.php多条件动态筛选 php实现数据筛选
  • 17.php实现频率限制 php限制频繁访问
  • 18.php文本转字节 php字符转换成数字
  • 19.关于php2esgbi的信息
  • 20.订餐系统php 订餐系统升级维护,请前往

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]