php代码审计之php://filter

今天碰到了一道bugku里的题

题目提示在index里

http://123.206.87.240:8005/post/index.php?file=show.php

抓包抓不到东西 然后百度了一下发现了一个协议
php://filter 可用来读取文件源码
格式为:

php://filter/read=convert.base64-encode/resource=[文件路径] 

他的意思是 我们可以用base64的编码方式来读取index.php 也就是网页源文件
所以可以构建payload:

http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

😕/filter用途较为广泛 通过filter的名字就可以看出来它可以过滤很多东西

filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
filter_input - 获取一个输入变量,并对它进行过滤
filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤

例如

<?php
$content = '<?php exit; ?>';
$content .= $_POST['txt'];
file_put_contents($_POST['filename'], $content);

其中 exit()是输出一条消息 并推出当前脚本
可以通过php://filter绕过这里的限制

对我们想要写入的一句话木马进行base64编码后利用php://filter/read的解码功能
然后就可以成功上传webshell

有大佬说还可以利用此协议解决php和标准XML冲突的问题 还没看明白 日后补充

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值