首页 > 其他分享 >文件包含漏洞

文件包含漏洞

时间:2024-03-23 09:58:12浏览次数:25  
标签:文件 include 包含 require 漏洞 php

文件包含

  开发人员通常把可重复使用的函数单独写在一个文件,在使用某函数时直接调用此文件,这就是文件包含

  通常会把包含的文件设置为变量来进行动态调用,导致客户端可以调用任意文件,造成文件包含漏洞

 

函数

  php中有四个文件包含的函数,include,include_once,require,require_once

  函数          区别

  include()          文件包含失败时会产生警告,脚本继续运行

  include_onece()      与include()功能相同,文件只会被包含一次

  require()        文件包含失败时产生错误,直接结束脚本执行

  require_once()      与require()功能相同,文件只会被包含一次

  

相关配置

  文件包含是php的基本功能之一,分为本地文件包含和远程文件包含,通过php.ini来配置

  allow_url_fopen=On/Off (本地文件包含)

  allow_url_include=On/Off  (远程文件包含)

 

  本地文件包含(LFI)

    本地文件包含就是可以通过相对路径的方式找到文件并且包含它。

  远程文件包含(RFI)

    远程文件包含就是我们可以通过http或者ftp等方式远程包含文件

 

漏洞特点

  PHP提供的文件包含功能非常强大,有以下特点

  1.无视文件拓展名读取文件

    包含文件时,php会读取文件的源码,包括图片文件。包含文件时包含的是文件的源码。

  2.无条件解析php代码

    文件包含在读取文件源码的时候,如果遇到符合php语法规范的代码就会无条件执行。包含图片马的时候也会当作php解析。

 

文件包含漏洞利用

  读取敏感文件:

    条件:1.目标主机文件存在;2.具有文件可读权限

  直接包含图片木马:

    利用文件包含漏洞直接包含图片木马,然后用蚁剑进行连接

  包含木马写shell:

    将如下代码写入图片中,<?php fputs(fopen('shell.php','w'),"<?php @eval(\$_REQUEST['cmd']); ?>"); ?>

    这段代码的含义是在当前目录下创建一个名为shell.php的文件,内容为<?php @eval(\$_REQUEST['cmd']); ?>,当我们包含图片时,代码就会被执行

  

  利用php伪协议传输php文件

    ?path=php://filter/read=convert.base64-encode/resource=index.php,解码后就是index.php的源代码

  利用php伪协议执行php代码

    ?path=php://input  然后用post写入想要执行的代码

  

面试:存在本地文件包含漏洞,但没有文件上传API,怎么利用

思路:把shell写入日志文件,文件包含日志文件getshell。比如找到一个可以sql注入的地方,执行select "<?php @eval($_POST['shell']);?>",找到日志文件地址后包含日志文件

【精选】【文件包含漏洞-04】经典面试题:已知某网站仅存在本地文件包含漏洞时,如何GetShell?_本地文件包含怎么getshell-CSDN博客

    

  

 

 

 

标签:文件,include,包含,require,漏洞,php
From: https://www.cnblogs.com/dg05/p/17786916.html

相关文章

  • 固定常用文件夹到快速访问
    对windows系列系统,就是日常的效率工具,总有一些很常用,每每见过,似曾相识,又每每不得其法的小技巧,因不是主业,影响有亦可以忽略,少有深究的。win窗口左侧有一个快速访问栏,用来打开常用的文件夹很便捷,印象中好像拖文件夹过去就可以了,有每每实现不了,好像偶尔又莫名其妙的可以了的操作,就这......
  • Mysql中备份数据文件中/*!*/的含义
    1.问题在备份数据库时,我们发现生成的备份文件中,存在这样一系列代码:/*!40101SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT*/;/*!40101SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS*/;/*!40101SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTIO......
  • 权限提升-Windows权限提升篇&溢出漏洞&宝塔面板Bypass&CS插件化&MSF模块化
    知识点1、Web到Win系统提权-权限差异原因2、Web到Win系统提权-溢出漏洞(MSF&CS)3、Web到Win系统提权-集成软件(哥斯拉模块Bypass)章节点:1、Web权限提升及转移2、系统权限提升及转移3、宿主权限提升及转移4、域控权限提升及转移基础点0、为什么我们要学习权限提升转移......
  • 根文件系统简介与BusyBox构建根文件系统
    参考资料:https://www.bilibili.com/video/BV12E411h71h?p=43&vd_source=432ba293ecfc949a4174ab91ccc526d6 根文件系统简介:根文件系统也成为rootfs,fatfs这类的文件系统属于Linux内核的一部分,属于软件代码如果没根文件系统,内核会出现kernelpanic。根文件系统就是一堆文件,比......
  • Python解压当天创建的ZIP文件到指定的文件夹中
    1.首先,导入了需要使用的模块:-`zipfile`:用于处理ZIP文件的模块。-`os`:提供了与操作系统交互的功能。-`shutil`:用于高级文件操作,例如移动文件等。-`datetime`:用于处理日期和时间的模块。2.定义了一个函数`unzip_todays_files(zip_files_folder,extract_folder)`......
  • jupyternotebook 出现无法新建文件
    jupyternotebook环境配置(重写config文件、配置默认工作文件路径、如何解决需要token登陆的问题/解决无法跳转浏览器问题等)_如何给jupitornotebook打开的文件设置环境配置-CSDN博客这个是用来找那个config路径的 解决办法:完美解决:使用jupyter创建python时错误CreatingNot......
  • Saltstack 最大打开文件数问题之奇怪的 8192
    哈喽大家好,我是咸鱼。今天分享一个在压测过程中遇到的问题,当时排查这个问题费了我们好大的劲,所以我觉得有必要写一篇文章来记录一下。问题出现周末在进行压测的时候,测试和开发的同事反映压测有问题,请求打到A服务上被拒绝了。我们登录服务器查看A服务的日志,发现频繁地报To......
  • Python中的数据集包含哪些?
    1.set()集合格式:{元素1,元素2,元素3},元素之间用逗号分隔,每个元素的类型可以不一样,比如{1,2,3},{'a','b','c'},{'a',1,'b',2}set集合是无序的,里面的元素不可重复 2.list集合(列表)格式:[元素1,元素2,元素3],元素可以是任何类型,比如字符串,数字,字典对象等list集合是有序的,里面的元......
  • 文件的三种打开方式
    #mode='r'只读#mode='w'只写.清空文件再写入#mode='a',追加,在后面追加写入文件#fr=open('test.txt',mode='r',encoding='utf8')#默认r=rt#data=fr.read()#mode='rt'打开text文本类型#mode='rt......
  • Linux文件权限
    前言大家好,我是jiantaoyab,本篇文章给大家介绍Linux的文件权限。文件权限系统是确保文件和系统安全的关键组成部分。正确理解和配置文件权限对于维护系统安全至关重要。用户和用户组在Linux下,有拥有者user、用户组group、其他人others之分。什么的group?假设在一个班里面......