<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>PHP杂食 on 波奇大王的 &#34;Hugo Project&#34;</title>
        <link>https://www.guitarhero.wang/notes/php/</link>
        <description>Recent content in PHP杂食 on 波奇大王的 &#34;Hugo Project&#34;</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 06 Sep 2026 20:50:37 +0800</lastBuildDate><atom:link href="https://www.guitarhero.wang/notes/php/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>PHP 文件访问范围限制：open_basedir 与目录边界</title>
            <link>https://www.guitarhero.wang/notes/php/php%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE%E8%8C%83%E5%9B%B4%E9%99%90%E5%88%B6open_basedir%E4%B8%8E%E7%9B%AE%E5%BD%95%E8%BE%B9%E7%95%8C/</link>
            <pubDate>Sun, 06 Sep 2026 20:50:37 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/php/php%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE%E8%8C%83%E5%9B%B4%E9%99%90%E5%88%B6open_basedir%E4%B8%8E%E7%9B%AE%E5%BD%95%E8%BE%B9%E7%95%8C/</guid>
            <description>&lt;h1 id=&#34;php-文件访问范围限制open_basedir-与目录边界&#34;&gt;PHP 文件访问范围限制：open_basedir 与目录边界&#xD;&#xA;&lt;/h1&gt;&#xD;&#xA;    &lt;blockquote&gt;&#xD;&#xA;        &lt;p&gt;问题：PHP 靠什么限制&amp;quot;可访问的目录范围&amp;quot;？&#xA;答案：三层限制，核心是 &lt;code&gt;open_basedir&lt;/code&gt;。&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;/blockquote&gt;&#xD;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;三层限制结构&#34;&gt;三层限制结构&#xD;&#xA;&lt;/h2&gt;&lt;h3 id=&#34;-open_basedirphp-配置层--主角&#34;&gt;① open_basedir（PHP 配置层 —— 主角）&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;php.ini / .user.ini / 虚拟主机配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;open_basedir&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/var/www/html:/tmp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：限制 PHP 所有文件操作能访问的目录范围&#xA;&lt;ul&gt;&#xA;&lt;li&gt;受影响的函数：&lt;code&gt;fopen&lt;/code&gt;、&lt;code&gt;file_get_contents&lt;/code&gt;、&lt;code&gt;include&lt;/code&gt;、&lt;code&gt;require&lt;/code&gt;、&lt;code&gt;readfile&lt;/code&gt; 等&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;超出范围的路径访问 → 直接&lt;strong&gt;报错拒绝&lt;/strong&gt;（即使系统权限允许）&lt;/li&gt;&#xA;&lt;li&gt;⚠️ 它是&lt;strong&gt;目录前缀匹配&lt;/strong&gt;，不是精确限制 → 存在绕过手法（见下）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;-系统文件权限os-层&#34;&gt;② 系统文件权限（OS 层）&#xD;&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;PHP 以什么用户运行（&lt;code&gt;www-data&lt;/code&gt; / &lt;code&gt;nobody&lt;/code&gt;），能读哪些目录由 &lt;strong&gt;Linux 文件权限&lt;/strong&gt;决定&lt;/li&gt;&#xA;&lt;li&gt;即使没配 open_basedir，www-data 也读不了 root 的文件&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;-web-服务器根目录服务层&#34;&gt;③ Web 服务器根目录（服务层）&#xD;&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;Apache/Nginx 的 &lt;strong&gt;DocumentRoot&lt;/strong&gt; 决定 URL 能访问哪些目录&lt;/li&gt;&#xA;&lt;li&gt;web 根之外的目录通过 URL 访问不到（但 PHP 在 open_basedir 允许时仍可读）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;顺带分清disable_functions&#34;&gt;顺带分清：disable_functions&#xD;&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;disable_functions&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;system,exec,passthru,shell_exec&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;不是限制目录&lt;/strong&gt;，是禁用危险函数&lt;/li&gt;&#xA;&lt;li&gt;与 open_basedir 常一起考察：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;open_basedir → 管&amp;quot;&lt;strong&gt;能碰哪&lt;/strong&gt;&amp;quot;（文件范围）&lt;/li&gt;&#xA;&lt;li&gt;disable_functions → 管&amp;quot;&lt;strong&gt;能执行啥&lt;/strong&gt;&amp;quot;（函数权限）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;open_basedir-绕过ctf比赛高频考点&#34;&gt;open_basedir 绕过（CTF/比赛高频考点）&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;常见思路：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;/proc/self/root/&amp;lt;真实路径&amp;gt;&lt;/code&gt; 等价路径访问&lt;/li&gt;&#xA;&lt;li&gt;符号链接（symlink）绕过前缀匹配&lt;/li&gt;&#xA;&lt;li&gt;配合软链接目录跳转&lt;/li&gt;&#xA;&lt;li&gt;通过其他语言/扩展（如 FFI、iconv、glob 等）间接读写&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xD;&#xA;    &lt;blockquote&gt;&#xD;&#xA;        &lt;p&gt;遇到具体题目再针对性分析，先记住&amp;quot;它是前缀匹配，有绕过空间&amp;quot;这个概念。&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;/blockquote&gt;&#xD;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一句话总结&#34;&gt;一句话总结&#xD;&#xA;&lt;/h2&gt;&#xD;&#xA;    &lt;blockquote&gt;&#xD;&#xA;        &lt;p&gt;&lt;strong&gt;PHP 限制可访问目录 = &lt;code&gt;open_basedir&lt;/code&gt;（PHP 层）+ 系统文件权限（OS 层）+ DocumentRoot（Web 层）&lt;/strong&gt;，&lt;code&gt;open_basedir&lt;/code&gt; 是最常考的 PHP 专属限制，绕它是高频题。&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;/blockquote&gt;&#xD;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;相关联想&#34;&gt;相关联想&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;探针/tz.php：信息泄露 → 配合绝对路径利用&lt;/li&gt;&#xA;&lt;li&gt;文件包含 + open_basedir：读 web 根之外文件会被拦&lt;/li&gt;&#xA;&lt;li&gt;写 shell 时目标路径必须落在 open_basedir 允许的目录内&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
