ffuf:一款高效灵活的Web模糊测试利器
在网络安全领域,模糊测试(Fuzzing)是一种强大的技术,用于发现系统中的隐藏功能、潜在漏洞或未公开资源。而在Web渗透测试中,ffuf
(Fast Fuzzing Tool)凭借其高效性、灵活性和强大的自定义能力,成为安全研究人员和渗透测试者的首选工具之一。无论是探测网站的文件类型、爆破目录、测试参数,还是进行虚拟主机(VHost)枚举,ffuf
都能胜任。本文将从ffuf
的背景出发,深入剖析其功能原理,详细介绍常见使用场景,并结合丰富示例和优化技巧,帮助读者全面掌握这一工具。
一、ffuf简介与背景
1.1 什么是ffuf?
ffuf
是一款开源的命令行模糊测试工具,由Joona Hoikkala开发,最初发布于2018年。它专为Web应用程序设计,旨在通过快速发送大量请求并分析服务器响应,探测目标系统的隐藏资源或弱点。与传统的模糊测试工具(如Burp Suite Intruder
)相比,ffuf
以其轻量级、高性能和高度可定制性脱颖而出。它的名字“ffuf”不仅体现了其“模糊”(fuzz)的核心功能,也暗示了其“快速”(fast)的执行效率。
1.2 为什么选择ffuf?
在Web渗透测试中,安全研究人员常常需要执行以下任务:
- 发现隐藏的目录或文件(如
/admin
或backup.zip
)。 - 测试参数注入点(如文件包含或SQL注入)。
- 爆破子域名或虚拟主机。
- 验证弱密码或敏感API端点。
这些任务通常涉及大量重复请求和响应分析,而ffuf
的优势在于:
- 高性能:基于Go语言开发,支持多线程运行,扫描速度极快。
- 灵活性:支持自定义HTTP方法、头、数据和过滤条件。
- 丰富的字典支持:兼容社区常见的单词表(如Seclists)。
- 易用性:命令行界面直观,适合脚本化操作。
1.3 安装与基本要求
ffuf
的安装非常简单。对于Linux或macOS用户,可以通过以下命令安装:
go install github.com/ffuf/ffuf/v2@latest
或者直接从GitHub Releases页面下载预编译二进制文件。安装完成后,运行ffuf -h
即可查看帮助信息。
运行ffuf
需要准备:
- 目标URL:待测试的Web服务器地址。
- 字典文件:如Seclists中的单词表,用于生成测试用例。
- 网络环境:确保目标可达,避免防火墙或WAF干扰。
二、ffuf的核心功能与原理
2.1 模糊测试的基本原理
模糊测试的核心思想是通过向目标系统输入大量随机或半随机数据,观察其响应以发现异常或隐藏行为。在Web环境中,这通常表现为:
- 替换URL中的部分内容:如目录名、文件名或参数值。
- 修改请求头或数据:如
Host
头或POST表单字段。 - 分析响应:根据状态码、响应大小或内容差异判断结果。
ffuf
通过FUZZ
关键字实现动态替换,用户只需指定替换位置和字典,工具会自动生成并发送请求。
2.2 关键参数解析
以下是ffuf
常用的核心参数:
-w
:指定字典文件,格式为路径:FUZZ
,其中FUZZ
是占位符。-u
:目标URL,包含FUZZ
标记替换位置。-X
:指定HTTP方法(如GET
、POST
)。-H
:自定义HTTP头,如Host
或Content-Type
。-d
:POST请求的数据,包含FUZZ
占位符。-fs
:过滤响应大小,排除不符合条件的响应。-fc
:过滤状态码。-t
:线程数,默认40,控制并发请求速度。-r
:跟随重定向。-c
:彩色输出,便于阅读。-ic
:忽略字典中的注释行。-ac
:自动校准过滤器,减少手动配置。
这些参数的组合赋予了ffuf
极大的灵活性,适用于多种测试场景。
三、ffuf的典型使用场景与实践
ffuf
作为一款功能强大的模糊测试工具,在Web渗透测试中有着广泛的应用场景。以下详细介绍其七大典型使用场景,每个场景不仅包括命令示例和分析,还涵盖背景知识、技术细节、实际案例以及潜在问题与解决方法,确保读者能够全面理解并灵活运用。
3.1 判断网站脚本语言类型(文件扩展名探测)
场景背景
在渗透测试的侦察阶段,了解目标网站使用的后端技术栈是至关重要的第一步。不同的脚本语言(如PHP、ASP、JSP)可能存在特定的漏洞(如PHP的LFI、ASP的经典注入),因此识别技术类型有助于制定后续攻击策略。ffuf
通过枚举常见文件扩展名,探测服务器对不同文件类型的响应,从而推断其技术栈。
示例命令
ffuf -w /opt/useful/seclists/Discovery/Web-Content/web-extensions.txt:FUZZ \-u http://SERVER_IP:PORT/blog/indexFUZZ \-c -v
参数解析
-w /opt/useful/seclists/Discovery/Web-Content/web-extensions.txt:FUZZ
:指定Seclists中的扩展名字典,包含.php
、.asp
、.jsp
等常见后缀,FUZZ
为替换占位符。-u http://SERVER_IP:PORT/blog/indexFUZZ
:目标URL,FUZZ
将被替换为字典中的扩展名,形成如index.php
、index.asp
的请求。-c
:启用彩色输出,便于区分结果。-v
:显示详细输出,包括完整的HTTP响应头。
输出分析
index.php [Status: 200, Size: 1234, Words: 567, Lines: 45]
index.asp [Status: 404, Size: 234, Words: 12, Lines: 5]
index.jsp [Status: 404, Size: 234, Words: 12, Lines: 5]
index.html [Status: 200, Size: 800, Words: 300, Lines: 25]
index.php
返回状态码200且响应大小较大,表明服务器支持PHP并可能以此为主技术。index.asp
和index.jsp
返回404,说明这些技术未被使用。index.html
返回200但大小较小,可能仅为静态页面。
实际案例
在测试某博客网站时,使用上述命令发现index.php
有效,进一步访问/blog/index.php
显示动态内容,结合后续扫描确认存在PHP版本的漏洞(如phpinfo()
泄露)。
潜在问题与应对
- 问题:某些服务器可能对所有扩展名返回200(如默认页面重定向)。
- 应对:使用
-fs 234
过滤404响应大小,或通过-fr
正则匹配响应内容中的技术特征(如<?php
)。
优化建议
- 扩展测试范围:添加
-e .bak,.old,.txt
探测备份文件或隐藏资源。 - 多线程加速:设置
-t 50
提升扫描效率。 - 结合上下文:若目标为CMS(如WordPress),可使用专用字典(如
wp-plugins.txt
)。
3.2 POST表单请求参数枚举
场景背景
Web应用程序中,POST请求常用于表单提交(如登录、注册),其参数名可能是安全漏洞的突破口。例如,未过滤的id
参数可能导致SQL注入,file
参数可能引发文件上传漏洞。ffuf
通过枚举常见参数名,帮助发现潜在的注入点。
示例命令
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:FUZZ \-u http://admin.academy.htb:PORT/admin/admin.php \-X POST \-d 'FUZZ=key' \-H 'Content-Type: application/x-www-form-urlencoded' \-fs 1234 \-c
参数解析
-w
:使用Burp收集的常见参数名字典(如username
、password
、id
)。-u
:目标为管理页面admin.php
。-X POST
:指定POST方法。-d 'FUZZ=key'
:构造表单数据,FUZZ
替换参数名,值固定为key
。-H 'Content-Type: application/x-www-form-urlencoded'
:设置表单MIME类型。-fs 1234
:过滤默认响应大小(可能是登录失败页面)。-c
:彩色输出。
输出分析
username [Status: 200, Size: 1500, Words: 600, Lines: 50]
password [Status: 200, Size: 1500, Words: 600, Lines: 50]
id [Status: 403, Size: 300, Words: 50, Lines: 10]
token [Status: 200, Size: 1450, Words: 590, Lines: 48]
username
和password
返回200且大小一致,可能是表单字段。id
返回403,暗示敏感参数被保护,值得深入测试。token
大小略有不同,可能涉及额外验证逻辑。
实际案例
在测试academy.htb
的管理登录页面时,发现id
参数触发403,进一步结合SQL注入测试(如id=1' OR 1=1--
)成功绕过认证。
潜在问题与应对
- 问题:WAF可能拦截频繁请求。
- 应对:添加
-p 0.2
设置0.2秒延迟,或使用代理(-x http://127.0.0.1:8080
)绕过。
优化建议
- 过滤状态码:
-fc 403
单独分析被禁参数。 - 动态值测试:修改
-d 'FUZZ=test'
为-d 'FUZZ=1' OR 1=1'
探测注入。 - 多字段组合:使用双
FUZZ
,如-d 'FUZZ1=FUZZ2'
测试参数对。
3.3 JSON请求参数测试
场景背景
随着RESTful API的普及,JSON格式成为现代Web应用的主流数据交换方式。攻击者可能通过修改JSON字段值(如权限角色)实现越权或逻辑漏洞。ffuf
支持JSON请求的模糊测试,适用于API端点探测。
示例命令
ffuf -t 100 -r -ic -c \-w /usr/share/seclists/Discovery/Web-Content/api/objects.txt \-u http://192.168.56.25:3000/register \-X POST \-H "Content-Type: application/json" \-d '{"role":"FUZZ"}'
参数解析
-t 100
:100线程加速扫描。-r
:跟随重定向,捕获最终响应。-ic
:忽略字典注释,提升效率。-w
:使用API相关字典(如admin
、user
、guest
)。-d '{"role":"FUZZ"}'
:JSON中role
字段值动态替换。-H
:指定JSON内容类型。
输出分析
admin [Status: 201, Size: 500, Words: 200, Lines: 15]
user [Status: 201, Size: 500, Words: 200, Lines: 15]
guest [Status: 403, Size: 300, Words: 50, Lines: 10]
superuser [Status: 201, Size: 510, Words: 205, Lines: 16]
admin
和superuser
返回201(创建成功),可能存在权限提升漏洞。guest
返回403,表明权限受限。
实际案例
在测试某注册API时,role:admin
成功创建管理员账户,后续登录验证获得完整系统权限。
潜在问题与应对
- 问题:API可能要求认证令牌。
- 应对:添加
-H "Authorization: Bearer TOKEN"
携带令牌。
优化建议
- 匹配成功码:
-mc 201
仅显示创建成功的响应。 - 枚举键名:测试
-d '{"FUZZ":"admin"}'
发现更多字段。 - 复杂JSON:构造嵌套数据,如
-d '{"user":{"role":"FUZZ"}}'
。
3.4 文件包含漏洞测试
场景背景
文件包含漏洞(LFI/RFI)是Web安全的常见问题,攻击者可通过参数注入读取敏感文件(如/etc/passwd
)或执行远程代码。ffuf
可枚举参数名,测试是否存在LFI。
示例命令
ffuf -r -ic -c \-w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt \-u 'http://10.0.0.210/prices/filedownload.php?FUZZ=../../../../../../../../../../../etc/passwd' \-fs 0 \-v
参数解析
-w
:参数名字典。-u
:URL中FUZZ
替换参数名,尝试读取/etc/passwd
。-fs 0
:过滤空响应。-v
:详细输出,便于检查内容。
输出分析
file [Status: 200, Size: 1500, Words: 300, Lines: 40]
path [Status: 200, Size: 1500, Words: 300, Lines: 40]
name [Status: 404, Size: 200, Words: 10, Lines: 4]
file
和path
返回200且大小较大,检查响应发现root:x:0:0
,确认LFI漏洞。
实际案例
在某靶机中,filedownload.php?file=/etc/passwd
泄露用户信息,进一步提取/proc/self/environ
获取环境变量。
潜在问题与应对
- 问题:路径遍历被过滤。
- 应对:尝试编码(如
..%2f
)或双写绕过(如....//
)。
优化建议
- 正则匹配:
-fr 'root:[x0]:'
筛选包含用户信息的响应。 - Windows测试:
-u '...?FUZZ=C:/Windows/system32/drivers/etc/hosts'
。 - 日志投毒:测试
FUZZ=/var/log/apache2/access.log
结合日志注入。
3.5 请求包密码爆破
场景背景
许多Web管理页面需要用户名和密码认证,弱密码是常见漏洞。ffuf
支持基于预定义请求文件的密码爆破,适用于复杂认证场景。
示例命令
ffuf -w /usr/share/seclists/Passwords/Common-Credentials/10k-most-common.txt \-request req.txt \-u 'http://192.168.1.177/admin/index.php' \-fs 854 \-t 50
参数解析
-w
:使用常见密码字典。-request req.txt
:加载抓包生成的请求文件,包含认证字段(如password=FUZZ
)。-fs 854
:过滤失败页面大小。-t 50
:50线程平衡速度与稳定性。
输出分析
password123 [Status: 200, Size: 2000, Words: 800, Lines: 60]
admin [Status: 200, Size: 854, Words: 300, Lines: 25]
password123
返回不同大小,表明登录成功。
实际案例
在测试某路由器管理页面时,结合admin:password123
成功登录,获取配置权限。
潜在问题与应对
- 问题:需要csrf_token。
- 应对:用Burp抓包更新
req.txt
,确保包含动态令牌。
优化建议
- 抓包准备:用
curl -o req.txt
保存完整请求。 - 排除干扰:
-fc 403,429
过滤被禁或限速响应。 - 双字段爆破:结合用户名字典,如
-w users.txt:USER -w passwords.txt:PASS -d 'username=USER&password=PASS'
。
3.6 递归目录爆破
场景背景
Web服务器可能隐藏深层目录(如/admin/backups
),递归扫描能全面发现资源。ffuf
的递归模式适合此类任务。
示例命令
ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ \-u http://SERVER_IP:PORT/FUZZ \-recursion \-recursion-depth 1 \-e .php,.html \-v \-c
参数解析
-recursion
:启用递归。-recursion-depth 1
:限制一层递归。-e .php,.html
:测试扩展名。-v
:详细输出。
输出分析
admin [Status: 200, Size: 1200, Words: 500, Lines: 40]
backup [Status: 200, Size: 800, Words: 300, Lines: 25]
backup.zip [Status: 200, Size: 5000, Words: 0, Lines: 1]
admin
和backup
为目录,backup.zip
为文件。
实际案例
在靶场中发现/backup/backup.zip
,下载后解压获得配置文件。
潜在问题与应对
- 问题:递归过深导致性能下降。
- 应对:限制
-recursion-depth
或使用-t 20
降低线程。
优化建议
- 深度调整:
-recursion-depth 2
覆盖更多层。 - 过滤404:
-fs 300
排除无效页面。 - 扩展字典:添加
.bak,.conf
探测配置文件。
3.7 VHost子域名爆破
场景背景
同一IP可能托管多个虚拟主机(VHost),未公开的子域名是渗透测试的重点。ffuf
通过修改Host
头发现这些资源。
示例命令
ffuf -c -ic \-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt \-u http://analytical.htb \-H 'Host: FUZZ.analytical.htb' \-t 100
参数解析
-w
:子域名字典。-H 'Host: FUZZ.analytical.htb'
:动态替换Host
头。-t 100
:加速扫描。
输出分析
admin [Status: 200, Size: 1500, Words: 600, Lines: 50]
dev [Status: 200, Size: 1200, Words: 500, Lines: 40]
test [Status: 404, Size: 300, Words: 50, Lines: 10]
admin.analytical.htb
和dev.analytical.htb
可能为有效VHost。
实际案例
在analytical.htb
靶机中,发现admin
子域指向管理界面,结合弱密码登录成功。
潜在问题与应对
- 问题:默认VHost返回一致响应。
- 应对:用
-fs
区分大小,或-fr
匹配独特内容。
优化建议
- 自动校准:
-ac
智能过滤默认响应。 - SSL支持:
-u https://
测试443端口。 - IP直连:替换域名用IP(如
192.168.1.1
)。
四、ffuf的高级技巧
4.1 过滤与匹配优化
技术细节
ffuf
提供强大的响应分析能力,通过过滤和匹配参数精确定位有效结果:
- 过滤参数:
-fs
:按响应大小过滤(如-fs 300
排除404页面)。-fc
:按状态码过滤(如-fc 404,403
)。-fw
:按单词数过滤(如-fw 10
排除空页面)。-fr
:正则匹配响应内容(如-fr 'error'
)。
- 匹配参数:
-mc
:仅显示指定状态码(如-mc 200,301
)。-ms
:匹配特定大小(如-ms 1500
)。
- 自动校准:
-ac
分析初始响应,自动设置过滤条件。
优化建议
- 结合
-v
查看完整响应,调试过滤条件。 - 使用
-mr
匹配响应头(如-mr 'Server: Apache'
)。
4.2 性能优化
技术细节
高性能是ffuf
的核心优势,但需平衡速度与稳定性:
- 线程调整:
-t
控制并发,默认40,过高可能触发WAF或宕机。 - 延迟控制:
-p
设置请求间隔(如-p 0.1
为0.1秒)。 - 代理支持:
-x
通过代理分担流量(如-x http://127.0.0.1:8080
)。
优化建议
- 动态调整:根据目标响应时间调整
-t
和-p
。 - 分段扫描:用
-input-cmd 'shuf dict.txt | head -n 1000'
分批处理大字典。 - 日志记录:
-o output.json
保存结果,便于分析。
五、总结
ffuf
作为一款开源的模糊测试工具,凭借其高效、灵活和强大的功能,已然成为Web渗透测试领域的利器。其高效性源于Go语言的天然优势,多线程并发的设计使其能在短时间内处理数以万计的请求,大幅提升测试效率。灵活性则体现在丰富的参数配置上,无论是HTTP方法的切换、自定义请求头的注入,还是响应过滤的精细化调整,ffuf
都能轻松应对不同目标的独特需求。更重要的是,它与社区生态(如Seclists字典)的无缝集成,让用户能够快速上手并在实战中发挥最大效能。
它不仅继承了传统模糊测试的核心思想——通过大量输入探测系统行为,还结合了现代Web应用的复杂性,提供了从基础资源枚举到高级漏洞挖掘的全方位支持。从文件扩展名探测到目录递归扫描,从POST表单参数枚举到JSON格式API测试,再到VHost子域名爆破,ffuf覆盖了渗透测试中的多种关键场景,为安全研究人员和红队成员提供了无限的探索可能。
相关文章:
ffuf:一款高效灵活的Web模糊测试利器
在网络安全领域,模糊测试(Fuzzing)是一种强大的技术,用于发现系统中的隐藏功能、潜在漏洞或未公开资源。而在Web渗透测试中,ffuf(Fast Fuzzing Tool)凭借其高效性、灵活性和强大的自定义能力&am…...
深入理解二叉树、B树与B+树:原理、应用与实现
文章目录 引言一、二叉树:基础而强大的结构基本概念特性分析Java实现应用场景 二、B树:适合外存的多路平衡树基本概念关键特性查询流程示例Java简化实现典型应用 三、B树:数据库索引的首选核心改进优势分析范围查询示例Java简化实现实际应用 …...
NLP高频面试题(二十八)——Reward model是如何训练的,怎么训练一个比较好的Reward model
在强化学习领域,**奖励模型(Reward Model)是关键组件之一,旨在通过预测特定行为或输出的奖励值,指导智能体的学习方向。特别是在基于人类反馈的强化学习(RLHF)**中,奖励模型通过整合…...
基础算法篇(3)(蓝桥杯常考点)-图论
前言 这期是蓝桥杯常考点的最后一章了,其中的dijkstra算法更是蓝桥杯中的高频考点 图的基本相关概念 有向图和无向图 自环和重边 稠密图和稀疏图 对于不带权的图,一条路径的路径长度是指该路径上各边权值的总和 对于带权的图,一条路径长度时…...
【力扣hot100题】(017)矩阵置零
还是挺简单的,使用哈希表记录需要置换的行列即可,这样就可以避免重复节省时间。 class Solution { public:void setZeroes(vector<vector<int>>& matrix) {unordered_set<int> row;unordered_set<int> line;for(int i0;i&l…...
量子退火与机器学习(2):少量实验即可找到新材料,黑盒优化➕量子退火
使用量子退火和因子分解机设计新材料 这篇文章是东京大学的一位博士生的毕业论文中的主要贡献。 结合了黑盒优化和量子退火,是融合的非常好的一篇文章,在此分享给大家。 https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.2.0133…...
Ubuntu 系统上完全卸载 CasaOS
以下是在 Ubuntu 系统上完全卸载 CasaOS 的详细步骤 一.卸载验证 二.卸载步骤 1.停止并禁用 CasaOS 服务 # 停止 CasaOS 核心服务 sudo systemctl stop casaos.service# 禁用开机自启 sudo systemctl disable casaos.service# 确认服务状态(应显示 inactive&…...
Flutter敏感词过滤实战:基于AC自动机的高效解决方案
Flutter敏感词过滤实战:基于AC自动机的高效解决方案 在社交、直播、论坛等UGC场景中,敏感词过滤是保障平台安全的关键防线。本文将深入解析基于AC自动机的Flutter敏感词过滤实现方案,通过原理剖析实战代码性能对比,带你打造毫秒级…...
Java Spring Boot 与前端结合打造图书管理系统:技术剖析与实现
目录 运行展示引言系统整体架构后端技术实现后端代码文件前端代码文件1. 项目启动与配置2. 实体类设计3. 控制器设计4. 异常处理 前端技术实现1. 页面布局与样式2. 交互逻辑 系统功能亮点1. 分页功能2. 搜索与筛选功能3. 图书操作功能 总结 运行展示 引言 本文将详细剖析一个基…...
高精度加减乘除 + R 格式
蓝桥账户中心 高精度核心思路:使用vector存储每一位数,倒序存储,即数组从低到高存储的是个位数。 注意减法、乘法、除法都需要去掉前导零 加法: vector<int> add(vector<int> &A, vector<int> &B) …...
鸿蒙编译构建-多目标产物
此文章内容兼容API12,使用harmony next应用开发 前置概念介绍 1,配置文件介绍: build-profile.json5:modules字段,用于记录工程下的模块信息,主要包含模块名称、模块的源码路径以及模块的 target 信息oh-…...
从零开始:Windows 系统中 PowerShell 配置 FFmpeg 的详细步骤
在Windows系统中不想每次都 cd 到FFmpeg目录中应用,现在可以通过PowerShell在任意目录下应用了。 PowerShell 基础概念 跨平台脚本工具 PowerShell 是微软开发的命令行外壳和脚本语言,支持 Windows、Linux 和 macOS 系统。其核心优势在于面向对象的操作…...
Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
Spring Boot 支持多种日志框架,以下是详细介绍: 支持的日志框架 Logback Logback 是 Log4j 创始人设计的另一个开源日志组件,作为 Log4j 的改良版本,它具有更快的执行速度、更丰富的配置选项以及更好的性能。Logback 分为三个模块…...
【STM32单片机】#4 OLED调试外部中断
主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...
[7-02-02].第15节:生产经验 - 消费者相关操作
Kafka笔记大纲 五、生产经验——分区的分配以及再平衡: 4.1.生产经验——分区的分配以及再平衡 4.2.参数: 5.4.1 Range 以及再平衡...
cmd命令查看电脑的CPU、内存、存储量
目录 获取计算机硬件的相关信息的命令分别的功能结果展示结果说明获取计算机硬件的相关信息的命令 wmic cpu get name wmic memorychip get capacity wmic diskdrive get model,size,mediaType分别的功能 获取计算机中央处理器(CPU)的名称 获取计算机内存(RAM)芯片的容量…...
# OpenCV实现人脸与微笑检测:从图像到视频的实战应用
OpenCV实现人脸与微笑检测:从图像到视频的实战应用 在计算机视觉领域,人脸检测和微笑检测是两个非常有趣且实用的任务。它们广泛应用于智能监控、社交媒体分析、人机交互等多个场景。本文将通过两个代码示例,详细介绍如何使用OpenCV实现人脸…...
k8s EmptyDir(空目录)详解
1. 定义与特性 emptyDir 是 Kubernetes 中一种临时存储卷类型,其生命周期与 Pod 完全绑定。当 Pod 被创建时,emptyDir 会在节点上生成一个空目录;当 Pod 被删除时,该目录及其数据会被永久清除。它主要用于同一 Pod 内多个容器间的…...
学习笔记—数据结构—二叉树(链式)
目录 二叉树(链式) 概念 结构 初始化 遍历 前序遍历 中序遍历 后序遍历 层序遍历 结点个数 叶子结点个数 第k层结点个数 深度/高度 查找值为x的结点 销毁 判断是否为完整二叉树 总结 头文件Tree.h Tree.c 测试文件test.c 补充文件Qu…...
STM32单片机的桌面宠物机器人(基于HAL库)
效果 基于STM32单片机的桌面宠物机器人 概要 语音模块:ASR PRO,通过天问block软件烧录语音指令 主控芯片:STM32F103C8T6 使用HAL库 屏幕:0.96寸OLED屏,用来显示表情 4个舵机,用来当作四只腿 底部一个面…...
ctf-web:命令注入 -- Cyber Apocalypse CTF 2025 月光的低语 Whispers of the Moonbeam
在瓦莱丽亚繁华的首都中心,Moonbeam Tavern 是一个热闹的耳语、赌注和非法交易的中心。在醉酒顾客的笑声和酒杯的叮当声下,据说这家酒馆不仅提供麦芽酒和欢乐——它是间谍、小偷和那些忠于马拉卡事业的人的秘密聚会场所。 护卫队了解到,在月光…...
如何自动化同义词并使用我们的 Synonyms API 进行上传
作者:来自 Elastic Andre Luiz 了解如何使用 LLM 来自动识别和生成同义词, 使术语可以通过程序方式加载到 Elasticsearch 同义词 API 中。 提高搜索结果的质量对于提供高效的用户体验至关重要。优化搜索的一种方法是通过同义词自动扩展查询词。这样可以更…...
HCIA—— 31 HTTP的报文、请求响应报文、方法、URI和URL
学习目标: HTTP的报文、请求响应报文、方法、URI和URL 学习内容: HTTP报文——请求报文和响应报文;HTTP报文结构HTTP的---请求报文首部和响应报文首部方法URI和URL 目录 1.HTTP报文 1)HTTP的报文——请求报文和响应报文 HTTP协议的请求和响…...
第五十三章 Spring之假如让你来写Boot——环境篇
Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...
Spring Boot 整合 RabbitMQ:注解声明队列与交换机详解
RabbitMQ 作为一款高性能的消息中间件,在分布式系统中广泛应用。Spring Boot 通过 spring-boot-starter-amqp 提供了对 RabbitMQ 的无缝集成,开发者可以借助注解快速声明队列、交换机及绑定规则,极大简化了配置流程。本文将通过代码示例和原理…...
【分布式】深入剖析 Sentinel 限流:原理、实现
在当今分布式系统盛行的时代,流量的剧增给系统稳定性带来了巨大挑战。Sentinel 作为一款强大的流量控制组件,在保障系统平稳运行方面发挥着关键作用。本文将深入探讨 Sentinel 限流的原理、实现方案以及其优缺点,助力开发者更好地运用这一工具…...
uniapp用法--uni.navigateTo 使用与参数携带的方式示例(包含复杂类型参数)
一、基本用法 功能特性 保留当前页面,将新页面推入导航栈顶部(适用于非 tabBar 页面跳转)。可通过 uni.navigateBack 返回原页面34。 代码示例 uni.navigateTo({url: /pages/detail/detail?keyvalue // 目标页面路径及参数 });…...
【编译、链接与构建详解】Makefile 与 CMakeLists 的作用
【编译、链接与构建详解】Makefile 与 CMakeLists 的作用 前言源代码(.c、.cpp)编译编译的本质编辑的结果编译器(GCC、G、NVCC 等) 目标文件(.o)什么是 .o 目标文件为什么单个 .o 目标文件不能直接执行&…...
Oracle 数据库系统全面详解
Oracle 数据库是全球领先的关系型数据库管理系统(RDBMS),由 Oracle 公司开发。它为企业级应用提供了高性能、高可用性、安全性和可扩展性的数据管理解决方案。 目录 一、Oracle 数据库体系结构 1. 物理存储结构 主要组件: 存储层次: 2. …...
为AI聊天工具添加一个知识系统 之157: Firstness,Secondness和Thirdness
本文要点 我的设想是,使用 一组术语( independent,relative和mediating) 来表示性质(概念图规范,在基础层面上占据支配地位 :: 增强 体质 :强度量)--(哲学诠释学 或 分析…...
MapReduce 的工作原理
MapReduce 是一种分布式计算框架,用于处理和生成大规模数据集。它将任务分为两个主要阶段:Map 阶段和 Reduce 阶段。开发人员可以使用存储在 HDFS 中的数据,编写 Hadoop 的 MapReduce 任务,从而实现并行处理1。 MapReduce 的工作…...
树莓派 —— 在树莓派4b板卡下编译FFmpeg源码,支持硬件编解码器(mmal或openMax硬编解码加速)
🔔 FFmpeg 相关音视频技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 正文 1、准备工作 (1)树莓派烧录RaspberryPi系统 (2)树莓派配置固定IP(文末) (3)xshell连接树莓派 (4)...
PHP回调后门
1.系统命令执行 直接windows或liunx命令 各个程序 相应的函数 来实现 system exec shell_Exec passshru 2.执行代码 eval assert php代码 系统 <?php eval($_POST) <?php assert($_POST) 简单的测试 回调后门函数call_user_func(1,2) 1是回调的函数 2是回调…...
Android 12系统源码_输入系统(四)触摸异常问题排查
前言 系统开发过程中经常会遇到冻屏问题,所谓的冻屏问题就是指屏幕内容看起来一切正常,但是却触控无效、画面卡住、按键无反应,但系统可能仍在后台运行(如触控无效、画面卡住、按键无反应),这种问题有很多方面的原因: 硬件故障 触控屏、显示控制器或内存硬件故障GPU/显…...
Java 大视界 -- 基于 Java 的大数据可视化在城市规划决策支持中的交互设计与应用案例(164)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
【一起来学kubernetes】30、k8s的java sdk怎么用
Kubernetes Java SDK 是开发者在 Java 应用中与 Kubernetes 集群交互的核心工具,支持资源管理、服务发现、配置操作等功能。 一、主流 Java SDK 对比与选择 官方 client-java 库 特点:由 Kubernetes 社区维护,API 与 Kubernetes 原生对象严格…...
T11 TensorFlow入门实战——优化器对比实验
🍨 本文為🔗365天深度學習訓練營 中的學習紀錄博客🍖 原作者:K同学啊 | 接輔導、項目定制 一、前期准备 1. 导入数据 # Import the required libraries import pathlib import matplotlib.pyplot as plt import tensorflow as t…...
Vue React
Vue 的源码主要分为以下几个部分: 主要涉及 响应式、虚拟 DOM、组件系统、编译器、运行时。 ├── packages/ │ ├── compiler-core/ # 编译器核心 │ ├── compiler-sfc/ # 处理 .vue 单文件组件 │ ├── compiler-dom/ # 处理 DOM 相关…...
分布式环境下的主从数据同步
目录 1. 数据同步的推/拉方式 1.1 主节点推送 1.2 从节点拉取 1.3 常见组件的推拉方式 2.复制方式 2.1 同步复制 2.2 异步复制 2.3 半同步复制 2.4 常见组件的同步方式 3.日志格式 3.1 基于语句复制 SBR 3.2 基于行复制 RBR 3.3 基于预写日志 WAL 3.4 基于触发器…...
C#:字符串插值(String Interpolation)
目录 起点:编程的基本需求 推导:如何让字符串更“聪明”? 什么是 C# 中的字符串插值? 为什么需要字符串插值? 什么时候用字符串插值? 插值的工作原理 总结 起点:编程的基本需求 程序需要…...
Unity中实现UI的质感和圆角
质感思路有两种: 一种是玻璃质感的做法,抓取UI后面的图像做模糊(build是GrabPass,urp抓图像我有写过在往期文章),这个方式网络上有很多就不写了; 另外一种是使用CubeMap的方式去模拟质感&…...
【蓝桥杯】 枚举和模拟练习题
系列文章目录 蓝桥杯例题 枚举和模拟 文章目录 系列文章目录前言一、好数: 题目参考:核心思想:代码实现: 二、艺术与篮球: 题目参考:核心思想:代码实现: 总结 前言 今天距离蓝桥杯还有13天&…...
【设计模式】适配器模式
适配器模式像是一个“接口转换器”,让两个不兼容的接口能够协同工作。比如 Type-C 转 3.5mm 耳机口的转换器,让新手机能用旧耳机。 代码实现 // 1. 旧款圆口充电器(被适配者) class RoundHoleCharger {public int getRoundHoleV…...
【NLP 面经 3】
目录 一、Transformer与RNN对比 多头自注意力机制工作原理 相比传统 RNN 在处理长序列文本的优势 应对过拟合的改进方面 二、文本分类任务高维稀疏文本效果不佳 特征工程方面 核函数选择方面 模型参数调整方面 三、NER中,RNN模型效果不佳 模型架构方面 数据处理方面…...
区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测
区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区…...
Github 热点项目 awesome-mcp-servers MCP 服务器合集,3分钟实现AI模型自由操控万物!
【今日推荐】超强AI工具库"awesome-mcp-servers"星数破万! ① 百宝箱式服务模块:AI能直接操作浏览器、读文件、连数据库,比如让AI助手自动整理Excel表格,三分钟搞定全天报表; ② 跨领域实战利器:…...
深入理解 YUV 颜色空间:从原理到 Android 视频渲染
在视频处理和图像渲染领域,YUV 颜色空间被广泛用于压缩和传输视频数据。然而,在实际开发过程中,很多开发者会遇到 YUV 颜色偏色 的问题,例如 画面整体偏绿。这通常与 U、V 分量的取值有关。那么,YUV 颜色是如何转换为 …...
Qt中绘制不规则控件
在Qt中绘制不规则控件可通过设置遮罩(Mask)实现。以下是详细步骤: 继承目标控件:如QPushButton或QWidget。重写resizeEvent:当控件大小变化时,更新遮罩形状。创建遮罩区域:使用QRegion或QPain…...
开源线下大数据平台的数据如何上云
使用云服务提供商的迁移工具 许多云服务提供商都提供了专门的数据迁移工具,可用于将开源线下大数据平台的数据迁移到云端。以亚马逊云服务(AWS)为例,其提供的 AWS Snowball 是一种边缘计算设备,可以用于大规模数据的离…...
【doris】Apache Doris简介
目录 1. 概述2. 技术特点2.1 高性能查询2.2 实时数据导入2.3 易于使用2.4 高可扩展性2.5 数据模型2.6 容错性 3. 适用场景4. 部署与架构4.1 部署方式4.2 架构特点 5. 优势 1. 概述 1.Apache Doris(原名Palo)最早诞生于百度广告报表业务,2017…...