当前位置:首页>Linux>Linux二进制内核提权深度实战:同源架构与六大漏洞全链路解析

Linux二进制内核提权深度实战:同源架构与六大漏洞全链路解析

  • 2026-07-01 13:39:16
Linux二进制内核提权深度实战:同源架构与六大漏洞全链路解析

一、引言

Linux内核提权是二进制安全领域的皇冠明珠。从最初的简单栈溢出到如今面对KASLR、SMEP、SMAP、堆随机化等多重防护机制,内核利用技术一直在攻防对抗中不断演进。本文基于六个真实内核漏洞的"五星完整版" exploit,系统性拆解现代Linux内核提权的完整技术链路。

本文所分析的六个漏洞覆盖了堆溢出、栈溢出、UAF、越界访问、整数溢出等主流漏洞类型,涉及nf_tables、块设备驱动、ALSA、KVM、Open vSwitch、ramfs等多个内核子系统。每个漏洞均采用"同源架构"设计,内置三条利用路径,形成从内存泄露→任意原语构造→ROP提权的完整闭环。

五星完整版标准:修正所有参数错误与结构体封装问题,补充完整错误处理、重试机制与环境检测;内置slab堆喷无需额外脚本;支持musl-gcc静态编译,适配Linux 5.4~6.6主流内核版本。

二、内核防护机制全景

现代Linux内核部署了层层递进的防护体系,每一层都旨在增加漏洞利用的难度和成本。理解这些机制是构建可靠exploit的前提。

2.1 地址空间随机化(KASLR)

内核地址空间布局随机化(Kernel Address Space Layout Randomization)是最基础也是最重要的防护机制。它将内核代码段、数据段、栈、堆等区域的基址随机化,使得攻击者无法预先知道关键函数和数据结构的地址。

  • 突破思路:通过信息泄露漏洞获取内核指针,推导内核基址。常见泄露源包括栈泄露、堆元数据泄露、越界读等。

  • 评估难度:★★☆☆☆ - 大多数漏洞都能找到某种形式的信息泄露路径

2.2 监管模式执行保护(SMEP)

Supervisor Mode Execution Prevention 防止内核态执行用户态页面的代码。这直接终结了传统的"ret2usr"技术——即跳转到用户态准备好的shellcode执行。

  • 突破思路:ROP(Return-Oriented Programming),在内核代码段中寻找可用的gadget,通过精心构造的返回地址链完成提权逻辑。

  • 评估难度:★★★☆☆ - 内核代码量巨大,gadget资源丰富,关键是找到合适的栈pivot

2.3 监管模式访问保护(SMAP)

Supervisor Mode Access Prevention 更进一步,禁止内核态访问用户态内存。这意味着即使有了任意读写原语,也不能直接操作用户态的数据。

  • 突破思路:将所有需要的数据结构(如ROP链、假对象)都布置在内核堆中,通过堆喷技术实现内核态内的操作。

  • 评估难度:★★★★☆ - 大幅增加了利用复杂度,要求完全在内核态内完成数据布局

2.4 堆随机化与SLUB防护

SLUB分配器的随机化包括slab页面基址随机、freelist指针混淆(CONFIG_SLAB_FREELIST_RANDOM)、freelist指针硬ening(CONFIG_SLAB_FREELIST_HARDENED)等。

  • 突破思路:堆喷技术(Heap Spraying),通过大量分配特定大小的对象来控制堆布局,制造可控的"空洞"供漏洞覆写。

  • 评估难度:★★★★☆ - 需要精确的堆风水(Heap Feng Shui)操作

三、同源利用架构设计思想

传统exploit往往只有一条利用路径,一旦某个环节失败就全盘皆输。"同源架构"采用不同的设计哲学——基于同一个漏洞根因,构造多条独立的利用路径,形成冗余容错的攻击面。

3.1 三层同源路径模型

路径

名称

核心目标

技术手段

第一层

ty

稳定内存泄露

堆溢出读、栈泄露、UAF残留读取等,破KASLR

第二层

tm

构造任意读写原语

UAF重写、越界写、对象伪造等,绕过SMAP

第三层

thd

劫持执行流提权

函数表覆盖、ROP链、堆喷假对象等,绕过SMEP

3.2 四层数据结构规范

所有exploit严格遵循 temp/sep/sample/tuple 四层结构,实现环境、策略、样本、结果的解耦:

  • temp(环境层):存储文件描述符、缓冲区、内存映射等运行时环境

  • sep(策略层):三条同源路径的函数指针表,定义利用策略接口

  • sample(样本层):漏洞触发所需的特定数据样本,如溢出payload、ioctl参数等

  • tuple(结果层):存储泄露的内核地址、计算出的符号地址、ROP链等中间结果

设计优势:这种分层架构使得每条同源路径可以独立调试、独立失败而不影响整体。当某条路径因内核版本差异失效时,其他路径仍可能成功,大幅提升了exploit的跨版本兼容性。

3.3 核心组件

四、六大漏洞深度解析

本章逐一分析六个内核漏洞的技术原理、利用路径和关键技巧。每个漏洞都代表了一种典型的漏洞类型和利用模式。

4.1 thundertide:nf_tables 堆溢出

漏洞类型:堆溢出(Heap Overflow) | 子系统:Netfilter nf_tables | 难度评级:★★★★☆

漏洞原理

nf_tables是Linux内核的新一代防火墙框架,通过netlink接口与用户态交互。漏洞存在于set元素的处理逻辑中——当构造重叠的set元素时,可以触发堆缓冲区溢出,越界写入相邻的堆对象。

nf_tables的优势在于:它提供了丰富的用户态可控操作(创建表、创建set、添加规则、删除等),攻击者可以精确控制堆对象的分配和释放时机,是进行堆风水操作的理想目标。

三条同源路径

同源ty(堆溢出稳定泄露):通过构造重叠的set元素触发堆越界读,泄露slab元数据中的内核指针。利用netlink的recv回包机制,将越界读取的内核内存返回到用户态。关键是要控制溢出长度恰好读到相邻对象中的内核指针,同时不触发内核崩溃。

同源tm(UAF任意读原语):基于泄露的内核基址,计算出commit_creds和init_cred等关键符号地址。通过链式规则的UAF(释放后重用)漏洞,构造受控的任意地址读原语。这条路径的核心价值是验证泄露地址的正确性,并为后续提权准备符号偏移。

同源thd(函数指针劫持ROP):堆喷假nft对象,覆盖对象的函数操作表指针。当内核调用被篡改的函数表时,执行流被劫持到栈pivot gadget,将栈指针切换到攻击者控制的ROP链上,最终执行commit_creds(init_cred)完成提权。

关键技术点

4.2 cindercloak:块设备ioctl 栈溢出

漏洞类型:栈溢出(Stack Overflow) | 子系统:块设备驱动 | 难度评级:★★★☆☆

漏洞原理

块设备驱动的HDIO_DRIVE_CMD ioctl命令存在参数校验缺失,用户态传入的缓冲区会被直接拷贝到内核栈上,导致经典的栈缓冲区溢出。这是最传统的漏洞类型,但在内核栈防护日益完善的今天,利用难度反而不低。

三条同源路径

同源ty(栈溢出泄露):栈溢出会破坏栈上的返回地址,但在溢出过程中,如果控制溢出长度恰好覆盖到栈上存储的内核指针(如函数返回地址、栈帧指针等),并通过dmesg的崩溃日志捕获这些地址,就可以泄露内核基址。这是一种"半崩溃式"泄露——会触发oops但不会导致系统完全挂死。

同源tm(ROP链部署):栈溢出的天然优势就是可以直接控制返回地址。在泄露内核基址后,直接在溢出缓冲区中构造完整的ROP链,覆盖返回地址即可。这条路径相对直接,不需要复杂的堆风水。

同源thd(栈劫持执行):通过栈pivot gadget将栈切换到攻击者控制的内存区域(如堆喷区域),执行更长的ROP链。由于内核栈大小有限(通常只有16KB或更少),复杂的ROP链需要切换到更大的空间执行。

关键技术点

4.3 voidquiver:ALSA MIDI 驱动 UAF

漏洞类型:释放后重用(UAF) | 子系统:ALSA音频驱动 | 难度评级:★★★★☆

漏洞原理

ALSA(Advanced Linux Sound Architecture)的MIDI设备驱动在ioctl处理中存在释放后重用漏洞。当设备文件被close后,某些内核对象没有被正确地从数据结构中移除,后续的ioctl操作仍会访问已释放的对象,形成UAF原语。

UAF是内核漏洞中最有价值的类型之一——它天然提供了"释放→堆喷占位→重用"的利用模式,攻击者可以精确控制被重用对象的内容。

三条同源路径

同源ty(UAF残留泄露):先触发对象释放,然后通过msg_msg堆喷用占位数据填充刚释放的slab槽位。重新打开设备并触发ioctl时,如果UAF对象恰好被堆喷数据占据,就可以通过读取操作将堆中的内核指针泄露出来。

同源tm(任意地址写原语):UAF的真正威力在于构造任意读写原语。通过堆喷伪造一个假对象,将对象中的关键指针指向目标地址,后续的驱动操作就会变成对目标地址的读写。这条路径是UAF利用的核心——从"控制一个对象"升级为"控制任意地址"。

同源thd(函数表劫持):覆盖对象的函数操作表(ops table)指针,指向攻击者构造的假函数表。当驱动调用对象的操作函数时,就会跳转到假函数表中预设的gadget地址,执行ROP提权。

关键技术点

4.4 specterthorn:KVM 内存越界访问

漏洞类型:越界访问(OOB Access) | 子系统:KVM虚拟化 | 难度评级:★★★★★

漏洞原理

KVM(Kernel-based Virtual Machine)的内存区域设置接口存在参数校验缺失。当用户态设置guest内存区域时,如果传入超大的size值(如0xffffffffffffffff),会导致整数溢出或边界检查绕过,使得guest可以访问超出预设范围的宿主机内存。

这是一种极其危险的漏洞类型——它直接打破了虚拟化的隔离边界,从虚拟机逃逸到宿主机内核。在云环境中,这类漏洞的危害等级最高。

三条同源路径

同源ty(越界读泄露宿主内核):构造超大size的内存区域,使guest的物理地址空间延伸到宿主机内核内存。通过在guest中读取特定偏移的内存,可以直接获取宿主机的内核指针,完成KASLR绕过。

同源tm(越界写ROP部署):利用越界写能力,将ROP链直接写入宿主机内核栈或其他可写的内核内存区域。这条路径的优势是不需要堆喷——越界写本身就是任意写原语。

同源thd(VM退出劫持):当VM因某种原因(如IO操作、异常)触发VM-Exit时,宿主机内核会执行VM退出处理逻辑。如果在退出路径上的某个函数指针或返回地址被越界写篡改,执行流就会被劫持,执行攻击者的ROP链。

关键技术点

4.5 warpwhisper:Open vSwitch netlink 越界索引

漏洞类型:越界索引(OOB Index) | 子系统:Open vSwitch | 难度评级:★★★★☆

漏洞原理

Open vSwitch(OVS)是一个高性能的虚拟交换机,在内核中有对应的datapath模块。漏洞存在于netlink接口的端口索引处理中——当传入超大的dp_ifindex值(如0x7fffffff)时,会导致数组越界访问,读写数组边界之外的内核内存。

三条同源路径

同源ty(越界索引读泄露):通过构造越界索引,读取数组外的内核内存。netlink的回复机制会将读取到的数据打包返回用户态,形成稳定的信息泄露通道。

同源tm(越界写任意地址构造):越界写配合pipe堆喷,可以构造出受控的任意地址写原语。通过调整越界偏移,可以精确控制写入的目标地址。

同源thd(vport函数表劫持):覆盖vport对象的操作函数表指针,指向堆喷布置的假函数表。当OVS内核模块调用vport操作时,执行流被劫持。

关键技术点

  • pipe堆喷:利用管道(pipe)的缓冲区在内核堆中分配可控对象,是另一种经典的堆喷手段

  • Generic Netlink协议:OVS使用Generic Netlink,需要先探测family号,动态适配不同环境

  • 索引偏移计算:需要根据目标地址和数组基址的差值,精确计算越界索引值

4.6 lurkvein:ramfs mount 整数溢出

漏洞类型:整数溢出(Integer Overflow) | 子系统:文件系统 | 难度评级:★★★★★

漏洞原理

ramfs是一种基于内存的文件系统,在mount时可以通过size参数指定文件系统大小。漏洞在于size参数的处理存在整数溢出——当传入极大值(如18446744073709551615UL,即2^64-1)时,整数运算会发生回绕,导致实际分配的内存远小于预期,从而形成越界访问。

三条同源路径

同源ty(整数溢出越界分配泄露):利用用户命名空间(user namespace)绕过CAP_SYS_ADMIN限制,在普通用户权限下mount ramfs。整数溢出导致的越界分配使得文件数据可以延伸到相邻的内核内存,通过读取文件内容就能泄露slab堆中的内核指针。

同源tm(越界内存改写堆布局):通过写入越界的文件数据,篡改相邻的内核堆对象。这相当于一个"慢动作"的堆溢出——每次write都可以向越界区域写入数据,逐步构造出可控的堆布局。

同源thd(堆对象释放劫持):当umount ramfs时,所有文件对应的内核对象都会被释放。如果某个对象的释放函数指针已经被越界写篡改,释放过程中就会触发执行流劫持。

关键技术点

五、提权全链路技术拆解

从前文的六个漏洞分析中,我们可以提炼出现代Linux内核提权的通用技术链路。无论漏洞类型如何变化,完整的提权过程通常都遵循相似的阶段化路径。

5.1 阶段一:信息泄露与KASLR绕过

KASLR是内核利用的第一道门槛。没有内核基址,后续的ROP、函数表劫持等都无从谈起。

常见泄露手法

  • 栈泄露:通过栈溢出或格式化字符串漏洞,泄露栈上存储的内核返回地址

  • 堆元数据泄露:通过堆溢出或UAF读取slab分配器的元数据,其中包含内核指针

  • 越界读:数组越界、缓冲区越界等漏洞直接读取边界外的内核内存

  • dmesg信息泄露:从内核崩溃日志、调试输出中提取内核地址

  • /proc信息泄露:某些/proc接口可能泄露内核符号地址或堆布局信息

泄露验证与基址计算

获取到泄露的内核指针后,需要验证其有效性并计算内核基址:

  1. 检查指针是否在内核地址空间(高16位为0xffff)

  2. 根据符号偏移(如commit_creds、init_cred)反推内核基址

  3. 通常将地址低20位(或12位)清零得到页对齐的基址

  4. 多条泄露路径交叉验证,确保基址计算正确

5.2 阶段二:任意读写原语构造

突破KASLR后,下一步是构造任意地址读写原语。这是从"有漏洞"到"能利用"的关键跃迁。

UAF路径

UAF是构造任意读写最经典的路径:

  1. 释放目标对象,形成UAF空洞

  2. 堆喷伪造的假对象,占据释放的槽位

  3. 假对象中的指针字段被设置为目标地址

  4. 触发驱动对假对象的读写操作,转化为对目标地址的读写

越界访问路径

数组越界或缓冲区越界可以直接转化为任意读写:

  • 计算目标地址与数组基址的偏移差

  • 构造对应的越界索引或溢出长度

  • 通过读写越界内存实现任意地址操作

堆溢出路径

堆溢出通过覆写相邻对象的关键字段实现:

  • 堆风水布局,确保目标对象紧邻溢出对象

  • 溢出覆写目标对象的函数指针或数据指针

  • 触发目标对象的操作,执行受控的读写

5.3 阶段三:执行流劫持与ROP

有了任意读写原语后,最终目标是劫持内核执行流,执行提权代码。

经典提权原语

Linux内核提权的标准范式是调用commit_creds(init_cred):

  • commit_creds:内核函数,用于设置当前进程的凭证(credentials)

  • init_cred:内核中的初始凭证,拥有root权限

  • 将当前进程的cred替换为init_cred,即可获得root权限

ROP链构造

由于SMEP的存在,不能直接执行用户态代码,必须使用ROP:

  1. pop rdi; ret:将第一个参数(init_cred地址)加载到rdi寄存器

  2. commit_creds函数地址:调用commit_creds设置凭证

  3. swapgs; iretq:恢复用户态上下文,安全返回用户态

swapgs和iretq是从内核态返回用户态的标准指令序列,用于恢复段寄存器、栈指针和标志寄存器。

栈切换(Stack Pivot)

很多情况下,攻击者不能直接控制内核栈的内容,需要通过栈切换gadget将栈指针转移到受控区域:

  • mov rsp, [reg+offset]; ret:最常见的栈切换gadget

  • 将受控内存(堆喷区域、用户态映射)的地址加载到rsp

  • 后续的ret指令开始执行ROP链

5.4 阶段四:提权验证与环境恢复

成功执行提权代码后,还需要完成最后的验证和清理工作。

权限验证

最直接的验证方式是检查getuid()的返回值是否为0(root用户的UID)。如果提权成功,通常会弹出一个root shell。

内核状态恢复

可靠的exploit应该尽量保持内核状态的稳定性:

  • 避免破坏关键的内核数据结构

  • 正确恢复被篡改的对象和函数表

  • 确保提权后系统不会立即崩溃

  • 对于生产环境的利用,"无痕"提权是更高的追求

稳定性与可靠性:内核利用的最大挑战不是"能不能提权",而是"能不能稳定提权且不崩系统"。一个优秀的exploit应该在不同内核版本、不同配置下都有较高的成功率,这也是"同源架构"设计的核心价值——通过多条路径的冗余来提升整体成功率。

六、工程化实践与工具链

内核漏洞利用不是一次性的黑客行为,而是可以工程化、系统化的技术体系。本章介绍批量利用的工程化实践。

6.1 批量静态编译

为了在不同环境中快速部署,所有exploit都采用静态编译,消除外部依赖。

musl-gcc静态编译

使用musl libc而非glibc进行静态编译,有以下优势:

  • 体积更小:musl的静态链接二进制通常比glibc小很多

  • 兼容性更好:不依赖目标系统的libc版本

  • 无动态依赖:单个二进制文件即可运行,无需加载任何.so

Makefile批量构建

通过统一的Makefile实现批量编译,确保所有exploit的编译选项一致:

  • 统一的编译器标志(CFLAGS)

  • 统一的优化级别和安全选项

  • 一键编译所有漏洞的exploit

  • 支持交叉编译,适配不同架构

6.2 标准化代码结构

所有exploit遵循统一的代码结构规范,便于维护和扩展。

四层结构的工程价值

temp/sep/sample/tuple四层结构不仅是利用策略的分层,也是工程化的需要:

  • 环境隔离:temp层封装所有系统资源,便于清理和错误处理

  • 策略可插拔:sep层的函数指针表可以动态替换,支持不同利用策略的热切换

  • 样本数据分离:sample层集中管理漏洞触发数据,便于针对不同内核版本调整

  • 结果集中存储:tuple层统一存储中间结果,便于调试和日志记录

核心组件复用

formstring、ford_explorer等核心组件在所有exploit中复用:

  • 减少重复代码,降低维护成本

  • 统一的错误处理和重试逻辑

  • 一致的日志输出格式,便于批量分析

6.3 版本适配与兼容性

内核漏洞利用的最大挑战之一是版本兼容性。不同内核版本的符号偏移、结构体布局、防护机制都可能不同。

符号偏移动态探测

可靠的exploit不应该硬编码符号偏移,而应该动态探测:

  • 通过/proc/kallsyms读取符号地址(需要root权限,不适用于提权场景)

  • 基于泄露的内核指针和已知的相对偏移计算

  • 针对不同内核版本维护偏移表,运行时匹配版本

同源路径的冗余价值

这正是同源架构的核心优势:

  • 某条路径因内核版本变化失效时,其他路径可能仍然有效

  • 不同路径对内核配置的依赖不同,增加了整体的环境适应性

  • 可以根据运行时探测结果,动态选择最可能成功的路径

6.4 测试与验证流程

工程化的exploit开发需要完整的测试验证流程。

隔离测试环境

  • 使用虚拟机或容器进行隔离测试

  • 准备多个内核版本的测试镜像

  • 自动化测试脚本,批量运行并收集结果

日志归集与分析

  • 统一的日志格式,包含提权成功/失败、泄露地址、耗时等信息

  • 批量运行后自动统计成功率

  • 失败案例的详细日志,便于定位问题

版本固化流程

经过充分测试的exploit版本应该固化归档:

  • 记录适配的内核版本范围

  • 记录已知的限制和前提条件

  • 版本号管理,便于追溯和回滚

七、总结与展望

Linux内核提权技术在攻防对抗中不断演进。从最初的简单栈溢出到今天面对多重防护的复杂利用链,技术的深度和复杂度都在持续提升。

7.1 技术趋势

防护机制持续强化

内核的安全防护机制还在不断完善:

  • CFI(控制流完整性):间接调用和跳转的目标校验,将大幅增加ROP的难度

  • 堆隔离与随机化:更细粒度的堆随机化和对象隔离

  • 安全模块堆叠:SELinux、AppArmor、Landlock等多重安全机制叠加

  • eBPF安全:eBPF验证器的持续强化,封堵通过eBPF提权的路径

利用技术演进

道高一尺魔高一丈,利用技术也在同步进化:

  • 数据导向编程(DOP):不直接劫持控制流,而是通过篡改数据结构实现提权

  • 面向对象的ROP(OOP-ROP):利用内核中的面向对象特性构造更复杂的利用链

  • 信号处理利用:通过信号处理机制实现更隐蔽的执行流劫持

  • 多漏洞链式利用:组合多个漏洞,每个漏洞只完成一步,最终达成目标

7.2 同源架构的方法论价值

本文介绍的"同源架构"不仅是一种exploit设计模式,更是一种安全研究的方法论:

  • 冗余设计思维:不依赖单一路径,构建多重攻击面

  • 标准化工程实践:统一的结构和组件,提升研究效率

  • 跨漏洞抽象:从具体漏洞中提炼通用模式,形成可复用的技术栈

  • 全链路视角:从泄露到提权的完整链路思考,而非孤立地看待单个漏洞

7.3 安全研究的意义

内核漏洞利用研究的价值不在于攻击,而在于防御:

  • 发现并披露漏洞,推动系统安全改进

  • 理解攻击技术,才能设计更有效的防护机制

  • 建立安全评估标准,量化系统的安全强度

  • 培养安全人才,构建健康的安全生态

安全是一个持续的过程。没有绝对安全的系统,也没有一劳永逸的防护。只有通过持续的研究和对抗,才能不断提升系统的安全水位。理解内核提权的技术原理,是每个安全从业者的必修课——因为只有懂得攻击,才能更好地防御。

  • 用户命名空间绕过:通过unshare(CLONE_NEWNS | CLONE_NEWUSER)获取mount权限,这是现代内核中无CAP_SYS_ADMIN提权的关键技巧

  • 文件堆喷:在ramfs中创建大量小文件,在内核堆中形成密集的inode/dentry对象分布

  • 强制卸载触发:使用umount2(MNT_FORCE)强制卸载,确保即使文件处于打开状态也会触发对象释放

  • guest物理地址到宿主虚拟地址的映射计算:需要精确计算越界偏移,才能准确读写目标内核地址

  • VM-Exit时机控制:需要选择合适的VM退出点,确保劫持发生在可控的执行上下文中

  • 虚拟化上下文恢复:提权后需要正确恢复虚拟化上下文,否则会导致宿主机崩溃

  • msg_msg堆喷原语:利用System V消息队列(msgget/msgsnd)在内核堆中分配可控大小和内容的对象,是经典的堆喷手段

  • slab大小匹配:堆喷对象的大小必须与UAF对象所在的slab缓存大小匹配,才能保证堆喷数据恰好占据释放的槽位

  • 假对象构造:伪造的对象需要在正确的偏移处放置内核指针,同时保持其他字段的合理性以避免触发内核校验

  • dmesg信息泄露:利用内核oops日志中的栈回溯信息提取内核指针,是栈溢出漏洞的经典泄露手法

  • 栈喷射(Stack Spray):通过大量系统调用将可控数据填充到内核栈中,增加ROP命中概率

  • 降级适配:优先尝试/dev/sda,失败则降级到/dev/loop0等回环设备,提高环境适应性

  • msg_msg 通用堆喷:利用/dev/zero的write操作触发内核分配特定大小的对象,实现通用的slab堆喷原语

  • 间隔释放制造空洞:堆喷后间隔释放一半对象,制造均匀分布的堆空洞,提高溢出命中目标对象的概率

  • 栈pivot gadget:mov rsp, [rdi+0x30]; ret 是理想的栈切换gadget,能将控制流平滑转移到ROP链

  • formstring:标准化的消息/参数构造组件,统一处理netlink消息、ioctl结构体等格式

  • ford_explorer:序列号/探索计数器,用于追踪操作次数和重试逻辑

  • ty/tm/thd:三条同源路径的实现函数,按顺序串行执行

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 05:24:49 HTTP/2.0 GET : https://f.mffb.com.cn/a/502184.html
  2. 运行时间 : 0.150739s [ 吞吐率:6.63req/s ] 内存消耗:4,973.67kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6b8b398eefdbc50bbbff805a7fc724e7
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000683s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000916s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.003128s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000301s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000518s ]
  6. SELECT * FROM `set` [ RunTime:0.000232s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000577s ]
  8. SELECT * FROM `article` WHERE `id` = 502184 LIMIT 1 [ RunTime:0.000553s ]
  9. UPDATE `article` SET `lasttime` = 1783027489 WHERE `id` = 502184 [ RunTime:0.012037s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002990s ]
  11. SELECT * FROM `article` WHERE `id` < 502184 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.008623s ]
  12. SELECT * FROM `article` WHERE `id` > 502184 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003427s ]
  13. SELECT * FROM `article` WHERE `id` < 502184 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008686s ]
  14. SELECT * FROM `article` WHERE `id` < 502184 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.027506s ]
  15. SELECT * FROM `article` WHERE `id` < 502184 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013073s ]
0.152331s