文件包含漏洞

2023-09-16 10:37:08

一、文件包含函数:

将外部文件的内容引入当前环境:#include<stdio.h>

include

require

include_once

require_once

hightlight_file

show_source

readfile

file_get_contents

fopen

file

php文件包含函数:

<?php include($_GET['filename']);?>

出现上面形式的文件包含函数,就存在文件包含漏洞

  1. 包含文件是php,则解析执行
  2. 内容是普通文本,读取到文件内容

文件包含漏洞大多使用到php伪协议

二、PHP 伪协议

1.file://协议

用于访问本地文件系统,在ctf中通常用来出去本地文件

使用方法:

•file:// [文件的绝对路径和文件名]

file=file://D:/soft/phpStudy/WWW/phpcode.txt

2.php://input协议

可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。 

  • 就是将post的内容作为文件的内容,此协议可以间接的控制文件里的内容

3.phar://伪协议

这个参数是就是php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压。

用法:?file=phar://压缩包/内部文件

                   phar://xxx.png/shell.php

4.zip://伪协议

zip伪协议和phar协议类似,但是用法不一样。

使用方法: 

•?file=zip://[xxx]#[压缩文件内的子文件名]   

          zip://xxx.png#shell.php。

5.php://filter 本地磁盘文件进行读取

用于服务器上的文件内容读取

使用方法: 

•?filename=php://filter/convert.base64-encode/resource=xxx.php 

•?filename=php://filter/read=convert.base64-encode/resource=xxx.php

三、实例

<?php
include("urlstyle_flag.php");
highlight_file(__FILE__);
extract($_GET);
if(!empty($aurora1))
{
    $aurora3 = trim(file_get_contents($aurora2));
 
if ($aurora1 == $aurora3)
{
    echo $flag;
}
else
    die("nonono");
}

使用php://input伪协议与上传漏洞结合,将post的内容作为上传文件的内容

如果原本是get请求,需要抓包改成post请求

更多推荐

【学习笔记】Java 一对一培训(2.1)Java基础语法

【学习笔记】Java一对一培训(2.1)Java基础语法关键词:Java、SpringBoot、Idea、数据库、一对一、培训、教学本文主要内容含Java简介、Java基础语法、Java对象和类、Java基本数据类型、Java变量类型、Java修饰符计划2小时完成,请同学尽量提前准备。这部分主要讲述Java是什么、怎么

Spring Boot的运行原理

SpringBoot的运行原理SpringBoot是一个用于快速构建独立、可独立运行的Spring应用程序的框架。它通过自动配置和约定优于配置的原则,简化了Spring应用程序的开发过程。下面将详细介绍SpringBoot的运行原理,并附上一些代码解释。1.主要组件SpringBoot的核心组件包括自动配置(Auto-

基于SpringBoot的图书商城系统

基于SpringBoot+Vue的网上书城系统、图书商城、网上书店系统,前后端分离开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven【主要功能】角色:管理员、用户管理员:用户管理、图书类型管理、图书

TCP详解之流量控制

TCP详解之流量控制发送方不能无脑的发数据给接收方,要考虑接收方处理能力。如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。为了解决这种现象发生,TCP提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。下面举个栗子,为了简

百度之星(夏日漫步)

夏日夜晚,小度看着庭院中长长的走廊,萌发出想要在上面散步的欲望,小度注意到月光透过树荫落在地砖上,并且由于树荫的遮蔽度不通,所以月光的亮度不同,为了直观地看到每个格子的亮度,小度用了一些自然数来表示它们的亮度。亮度越高则数字越大,亮度相同的数字相同。走廊是只有一行地砖的直走廊。上面一共有n个格子,每个格子都被小度给予了

如何给API签名

前言有时候为了保护API,需要用到API签名,使用API签名的好处:让API只能被特定的人访问防止别人抓包拿到请求参数,通过篡改参数发起新的请求客户端过程给API调用者分配一个app_id和app_secret,app_secret调用者和服务端各保存一份,不对外泄露,app_id需要在调用API时作为参数传递。除了a

分布式电源接入对配电网影响分析(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Matlab代码、数据、文章💥1概述分布式电源的接入将配电系统从传统的无源放射

Qt 中多媒体模块的使用

Qt模块中类的介绍Qt中摄像头的使用是在QtMultimedia模块中。QtMultimedia是一个重要模块,它提供了一组丰富的QML类型和C++类来处理多媒体内容。它还提供了访问相机和无线电功能所需的API。随附的Qt音频引擎提供了用于3D位置音频播放和内容管理的类型。Qt中的多媒体支持由模块提供。Qt多媒体模块提

录屏没有声音怎么办,3个方法教你解决

随着科技的不断发展,人们越来越依赖电子设备进行工作和学习。在这个过程中,录屏已经成为了一种必要的技能。无论是手机还是电脑,我们都可以通过录屏来记录重要的信息。但是,有时候我们在录屏时会发现声音无法正常录制,这是一个非常令人头疼的问题。本文将详细介绍录屏没有声音怎么办,帮助大家解决录屏没有声音的问题。手机录屏没有声音方法

C++进阶(二)

目录1、Vector2D默认构造、重载2、char深度理解3、深度理解简单的类操作1、Vector2D默认构造、重载#include<iostream>#include<cmath>classVector2D{private:doublex;//X坐标doubley;//Y坐标public://默认构造函数,将向量初始

这个发表在 Nature Genetics的水稻全基因组关联数据库 RHRD,很赞!!!

历经半个世纪的发展,杂交水稻育种取得了巨大的成就,培育出了大量的高产、优质、适应环境变化的品系。本数据库是一个综合性的杂交水稻数据库(http://ricehybridresource.cemps.ac.cn/#/),涵盖了从1976年至2017年间发布的486个商业杂交水稻品种信息、基因组变异、表型与全基因组关联数据

热文推荐