PHP伪协议与文件包含漏洞1

  PHP文件包含漏洞花样繁多,需配合代码审计。

  看能否使用这类漏洞时,主要看:

    (1)代码中是否有include(),且参数可控;

        如:

     (2)php.ini设置:确保 allow_url_fopen=1, allow_url_include=1;

  确定了使用的参数之后,就可以开始用伪协议了。

 

1. data://text/plain 伪协议

  可以执行任何代码;需要fopen和include全部打开。

  用法示例1:?page=data://text/plain,<?php phpinfo(); ?>

  用法示例2:?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==

    注:经过base64编码后的加号和等号最好手动将其换成url编码形式,以免识别不了。( =[%3d]; +[%2b] )

 

2.php://input 伪协议

  可以将post请求中的数据作为php代码执行;只需要include打开。

  用法示例:(抓包,在get参数后输入伪协议,在post区域输入php代码。)

   

 

   

3.php://filter 伪协议

  读取文件源代码;只需要fopen打开;一般在知晓网站路径的情况下使用。

  用法示例:?page=php://filter/read=convert.base64-encode/resource=learn.php

  这样,其返回的就是learn.php base64加密后的代码内容。此处learn.php与漏洞文件在同一目录下;否则,还要写相对路径的。

    (我在测试时,稍微改动一下这个语句,它的效果就变成执行learn.php了;原理和更多用法还待探究。)

 

将参数改为post后,data和php://filter还可使用,php://input失效。

 

参考:https://blog.csdn.net/weixin_45588247/article/details/119348342?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.searchformbaiduhighlight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.searchformbaiduhighlight

posted @   hiddener  阅读(309)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示