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 @ 2021-09-16 17:23  hiddener  阅读(395)  评论(0)    收藏  举报