说实话我第一次看到“BUU LFI COURSE 1 1”这个名字的时候第一反应是一道CTF入门题应该十分钟就能拿下来。结果真正动手才发现这道题虽然顶着“COURSE 1”的名头但把本地文件包含LFI漏洞的核心思路、常用绕过方式、以及从读文件到拿权限的完整利用链全部串了一遍一点也不“入门”。这篇文章我就把这套题完整拆开从题目本身、漏洞原理、解题流程到踩坑记录一次性讲透顺便说说从这道题里能延伸出哪些真实业务中的防御思路。如果你是刚开始接触Web安全的学生或者写过PHP但没怎么关注过文件包含风险的后端开发者这篇内容都值得读完。我不会只贴payload而是把“为什么这么写”“为什么读不出来”“为什么过滤了还能绕”这些背后逻辑一并讲清楚。1. 读懂题目BUU LFI COURSE 1 1 到底在考什么1.1 从标题拆解题目的核心考点先拆一下这个名字。“BUU”指的是BUUCTF一个在CTF圈子里非常常用的在线训练平台上面汇集了大量经典赛题和教学课程。LFI是Local File Inclusion的缩写翻译过来就是本地文件包含漏洞。而“COURSE 1 1”大概率是平台课程体系中的编号属于LFI专题的第一课。搞明白这个背景很重要。BUUCTF上的课程题一般有两种形态一种是完全模拟真实环境的容器化靶场打开就是一个可交互的Web页面另一种是偏教学性质会提示关键源码。这套LFI课程题属于前者它不会直接告诉你漏洞在哪而是让你像做渗透测试一样自己去发现、利用、拿flag。从考点的角度来说这类“LFI课程第一课”通常不会让考生一上来就搞复杂的PHP反序列化或日志投毒它的核心目标有三个第一个测试你是否理解文件包含漏洞的基本原理。第二个测试你是否知道常见的敏感文件路径和伪协议用法。第三个测试你是否能通过读源码或者读配置找到flag的藏身位置。但这里有个容易忽略的点既然是COURSE 1门槛会相对低但平台仍然会设置一个“需要绕过滤”的关卡。否则直接../../../../etc/passwd就能拿flag那这道题就失去教学意义了。所以刷这道题的正确心态不是“我要拿到flag”而是“我要把所有LFI的常见姿势都在这道题上验证一遍”。1.2 本地文件包含漏洞的原理基础聊LFI之前必须先把原理讲透。本地文件包含漏洞本质上出在PHP的这四个函数上include、include_once、require、require_once。这四个函数的作用都是把另一个文件的内容引入当前PHP脚本并执行区别只是在引入失败时的处理方式和去重策略上。问题在于很多历史遗留代码会把用户输入直接拼接到include的文件路径里比如这样?php $page $_GET[page]; include($page . .php); ?这就是一个典型的文件包含点。正常逻辑下用户传pagehome服务器就包含home.php。但如果攻击者传的是page../../../../etc/passwd那么include实际引入的就是/etc/passwd文件PHP会把文件内容当作HTML输出如果文件里没有PHP代码就直接原样返回敏感信息就泄露了。这里要解释一个关键点为什么../能穿越目录因为服务器最终执行include时PHP进程的工作目录是Web根目录比如/var/www/html。攻击者传../../../../etc/passwd时操作系统会进行路径归一化从/var/www/html出发每上一层目录就跳到父目录四层之后就是系统的根目录/然后进入etc目录读passwd文件。这个机制和你在终端里执行cd ../../..是一样的。还有个更隐蔽的问题文件名后缀拼接。如果代码里写的是include($page . .php)攻击者传page/etc/passwd%00这种老式截断在PHP 5.3.4之前是可以让include忽略掉.php后缀的空字节截断。虽然这个经典技巧已经失效于现代PHP版本但理解它有助于你看懂一些老文章和旧题目的解题过程。我用一个生活化类比帮你记忆文件包含漏洞就像你让楼下保安帮你取快递保安本来只该取你自己的快递但你告诉他“把4栋301的快递也拿来”保安没有校验这个门牌号是不是你的就真的去了。问题不是出在“取快递”这个动作上而是出在“没有核对门牌号是否在白名单里”。1.3 为什么CTF平台偏爱用LFI做教学题LFI在CTF里出现频率极高不是没有原因的。第一它代码量极小一个页面就能构造一个完整漏洞非常适合做课程。第二利用方式极其多元化既能读文件又能配合伪协议执行代码还能结合日志、临时文件进行getshell一道题能考出好几个层次的知识点。第三它非常贴近真实业务文件包含漏洞在历史上造成过大量严重事故比如一些OA系统、CMS系统都出现过类似问题。所以在BUUCTF这类训练平台上LFI几乎是一个“必刷但刷不腻”的专题。它既能筛出完全不会的新手也能让有一定基础的人施展不同的绕过思路。我见过有人用php://filter三段base64编码链搞定一道LFI题也见过有人用日志投毒打一个环境复杂的题目这种“一道题多种解法”的特性是它成为教学题首选的底气。2. 动手前必须准备好的利用手段2.1 文件包含漏洞的三种常见入口拿到一个目标别急着盲打先判断漏洞入口在哪。根据我刷题和做渗透测试的经验LFI漏洞最容易出现在这么几个位置第一个是页面加载参数。最常见的就是?page、?file、?filename、?template、?path这类直接指定文件的参数。看到这种参数第一反应就要试试能不能传路径穿越或者伪协议。第二个是主题/模板切换功能。很多老系统允许用户在多个主题之间切换后台逻辑往往是include(./templates/ . $_GET[theme] . .php)同样是文件包含点。这类入口经常出现在后台管理功能里容易被安全测试者忽略。第三个是文件下载、导出、预览功能。比如download.php?path../report/2024/xxx.pdf或者图片预览接口表面上走的是文件读取函数但如果后端实现用了include而非file_get_contents依然会构成包含漏洞。判断入口的方法很简单凡是URL参数里出现“路径”、“文件名”、“页面名”这种名字的都值得多试几下。我习惯第一次接触目标时先把URL里的参数全部映射一遍列出有哪些地方可能把用户输入传给文件系统再逐一测试。这个过程也叫“参数枚举”。2.2 伪协议与常见利用载荷LFI最核心的进攻武器不是路径穿越而是PHP伪协议。这里我整理了一张常用的伪协议利用表刷题前最好背下来伪协议写法示例作用前置条件php://filterphp://filter/convert.base64-encode/resourceindex.php读取文件源码并输出base64编码内容无需额外配置最通用php://inputphp://input POST数据将POST请求体作为PHP代码执行allow_url_includeOndata://data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8直接注入代码allow_url_includeOnexpect://expect://id直接执行系统命令需要安装expect扩展phar://phar://path/to/file.phar触发反序列化等操作需要上传phar文件这里必须重点解释php://filter为什么是LFI题里最常用的。假设目标代码是include($_GET[file])你直接传file/etc/passwd如果这个文件包含在Web目录内且可以被读取那你直接就能看到明文内容。但如果想读的是index.php这种PHP源码呢include会把里面的?php ... ?当成本地代码执行结果就是你什么都看不到源码被解释执行了。而php://filter/convert.base64-encode/resourceindex.php的意思是先把index.php的内容用base64编码再交给include去处理。base64编码后的字符串不包含PHP标签所以会原样输出你拿到之后自己解码就能看到完整的源码。这个技巧在真实渗透里也很有用。很多Webshell查杀工具识别的是文件内容但你用filter流去读取PHP文件时输出是一串base64反而绕过了部分流量侧的检测。2.3 路径穿越与敏感文件读取路径穿越是最直观的利用方式。它的公式很简单../../../../ 目标绝对路径。关键要判断需要穿越几层。不同环境Web目录深度不一样默认Apache在Debian/Ubuntu下的Web根目录是/var/www/html从那里读到/etc/passwd需要四层../而Nginx的默认配置可能是/usr/share/nginx/html需要六层左右容器化环境里路径更加多变。我刷这道LFI课程题时就遇到一个情况前三次../都没反应试到第四次才出内容。后来一查环境Web目录确实就是/var/www/html只是题目在include时加了一个前缀目录导致基础路径偏深。所以遇到路径穿越不要嫌麻烦多试几层或者直接用Burp Suite的Payload位置爆破功能把1到10层的穿越全部打一遍。常用敏感文件有这些/etc/passwd # Linux用户信息 /etc/shadow # 密码哈希权限受限 /etc/hosts # 主机名解析 /var/www/html/index.php # 站点源码 /proc/self/environ # 环境变量可能包含敏感配置 /proc/self/cmdline # 当前进程命令行 /proc/self/fd/ # 进程文件描述符可配合日志投毒 /var/log/apache2/access.log # Apache访问日志 /var/log/nginx/access.log # Nginx访问日志在Windows环境下则是C:\Windows\win.ini、C:\boot.ini这样的路径。判断目标是什么操作系统的小技巧是先试/etc/passwd如果报错提示文件不存在再试Windows路径或者观察页面报错信息里的路径分隔符是/还是\。3. 一次完整的解题实操复盘3.1 环境准备与目标探测我刷这道题时直接在BUUCTF平台打开题目给的容器链接拿到了一个形如http://target:port/的地址。访问首页看到的是一个很简单的PHP页面显示欢迎信息URL后面带着?pagewelcome这样的参数。这里要提醒一句在线靶场是授权测试环境随便测没问题如果是自己练习其他平台务必确认是否允许主动攻击行为。我平时做本地实验习惯用Docker搭一个相同的PHP环境docker run -d -p 8080:80 -v /opt/lfi-lab:/var/www/html php:7.4-apache然后手动写一个带漏洞的index.php文件放进去效果和在线容器几乎一致。这样做的优势是可以随心所欲改配置、看源码、调参数不受平台环境和时限限制。回到题目本身。第一步永远是信息收集把页面上能点的地方都点一遍观察URL参数的变化。这个题目入口很干净只有一个page参数所以我的探测重点全部集中在这个参数上。3.2 判断漏洞点与可控参数我先把pagewelcome改成page1页面内容变成了空白或报错。再改成page../../../../etc/passwd如果页面直接返回了类似以下内容root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin那么恭喜这个文件包含点不仅存在而且没有做任何过滤是最理想的练手环境。但在BUU这套课程题里第一次直接打路径穿越往往会失败因为题目在index.php里做了基础过滤可能是把../替换为空或者限制只能包含page目录下的文件。这种时候不要慌后面我会讲绕过方式这里先假设我们已经成功读取到了/etc/passwd证明漏洞点确实可控。判断可控性的关键点有三个参数值是否影响页面内容。尝试注入非法路径时是否触发报错报错信息里经常带真实的文件路径。使用php://filter是否能看到文件源码。3.3 payload构造与逐步验证既然漏洞确认存在接下来要做的是把页面源码拿到手。构造payload?pagephp://filter/convert.base64-encode/resourceindex.php页面返回一长串base64编码的字符串。这一段如果只复制出来会发现它是纯字母数字和等号组成的看起来就像乱码。拿base64解码工具解一下真实源码就出来了。我解出来的源码结构类似这样?php $file $_GET[page]; if (isset($file)) { include($file . .php); } else { include(welcome.php); } ?这就是典型的“后缀拼接型”文件包含。页面代码会自动给page参数补上.php后缀。这里就产生了一个问题我们刚才通过/etc/passwd能读到内容不是因为PHP把.php自动补上了而是因为当文件路径以/etc/passwd结尾时再加上.php可能变成了/etc/passwd.php正常情况下这个文件不存在。但之前路径穿越能成功说明题目环境里存在“空字节自动丢弃”或者其他后缀绕过逻辑更常见的情况是include($file)根本没有拼后缀或者源码像我上面写的那样拼了.php但通过路径穿越.php会被拼到路径的最后实际效果是../../../../etc/passwd.php在Linux系统上不存在这样的文件应该报错才对。这个矛盾点恰恰是解这道题的突破口。经过多次验证我发现这道题的源码结构其实是?php $file $_GET[page]; include($file); ?也就是没有任何后缀拼接所以直接传page/etc/passwd都能读。那为什么第一层测试会失败因为源码里还有一段过滤逻辑比如把../字符串替换为空或者拦截了php://开头的内容。我通过不断尝试不同编码组合最终确认了过滤规则的完整面貌。3.4 利用链排查与flag获取思路在BUU LFI COURSE 1 1这道题里拿到源码只是第一步flag还没出现。通常flag会存在这几个位置网站根目录下的flag、flag.php、flag.txt文件。服务器环境变量里/proc/self/environ。日志文件里此时需要结合日志投毒来getshell后搜索。我先尝试直接用路径穿越读flag?page../../../../flag没反应。又试flag.txt、flag.php也都没有直接输出。于是转而读环境变量?page../../../../proc/self/environ如果这时候页面返回了一堆环境变量仔细翻找可能会看到flag被管理员存在变量里但这种打法比较看运气。这道题里flag更可能是在源码里被注释过或者文件名是有随机字符的。最终让我成功的思路是回到源码本身。通过读源码我发现过滤规则拦截了../但没拦截php://filter而且页面允许包含绝对路径。于是我直接用filter流去读环境里其他PHP文件比如config.php、flag.php。逐个尝试后在一个flag.php文件里拿到了base64编码内容解码后就是flag。这条利用链的核心逻辑是漏洞点存在 → 用伪协议读源码 → 从源码中分析过滤规则 → 基于过滤规则选择合适的读取方式 → 枚举目录下的PHP文件 → 获取flag。这也是绝大多数LFI题的标准解法路径。如果题目复杂一些还会要求你用日志投毒执行命令再通过命令搜索flag后面我单独讲。4. 踩坑记录与问题排查实录4.1 高频报错与排查方法刷题时最常遇到的是 “No such file or directory” 和 “failed to open stream” 这两类报错。前者说明目标文件路径算错了后者可能是有权限限制或者路径中存在无法解析的字符。我整理了一份排查速查表报错信息原因排查方向No such file or directory路径层级不够或文件名错误加../层级、改大小写、核对文件名failed to open stream权限不足或open_basedir限制尝试读取Web目录内文件、查看报错中真实路径include(): Failed opening ...include目标不是文件或者被过滤检查是否命中过滤规则尝试不同协议页面空白目标文件是PHP且被include执行了用php://filter编码后再读返回二进制乱码读到了非文本文件不要直接读取二进制文件改读源码或文本文件排查时要保持耐心。我见过很多人读../flag一直不成功结果原因是他在Windows本地测试路径分隔符应该用反斜杠也有人在Linux环境里把文件名大小写搞错了Flag.php和flag.php是两个完全不同的文件。4.2 过滤绕过与变体思路LFI课程的真正难点在于过滤绕过。常见过滤规则和对应绕过方式我列一下过滤../可以用....//让过滤规则把字符串替换后剩下的.仍然形成有效穿越也可以使用绝对路径file/etc/passwd。过滤php://可以试大小写PHP://、Php://部分环境用纯字符匹配时拦截不住。过滤http://这个主要针对RFI远程文件包含通常可以用data://或php://input来替代。过滤一次关键词双写绕过比如php://被替换为空那么传pphp://hp://一次替换后变成php://。路径层层校验使用?pagephp://filter/convert.base64-encode/resource../../config这种组合让过滤规则无法简单匹配。绕过的核心思路是“找到过滤逻辑与include实际解析逻辑之间的差异”。攻击的本质就是利用程序员设想之外的输入。一个过滤器可能只会替换一次那我就在payload里写两次同样内容让它替换一次后变成合法内容。这里也补充一个判断技巧当你怀疑某个关键词被过滤时可以故意输错一下比如传pphp://如果页面内容异常说明过滤规则确实动了你的输入只是方式可能是移除或替换为空。来回试几次就能推断出过滤器的具体实现。4.3 版本差异与容器环境带来的坑刷BUU这套题时最容易忽略的是PHP版本差异。不同版本的PHP对伪协议的支持、对空字节的处理、对allow_url_include的默认配置都不太一样。PHP 5.3.4及以下存在空字节截断漏洞/etc/passwd%00可以抹掉后面的后缀。PHP 5.4到7.x空字节截断彻底失效但伪协议依然是LFI的主要利用方式。allow_url_include从PHP 5.2开始就默认关闭所以php://input和data://在默认配置下并不可用。phar://反序列化在PHP 5.3之后的版本中都可以用配合文件上传是很多复杂题目的突破口。BUUCTF平台的题目容器一般用的是Docker基础镜像多为官方php镜像。官方镜像里allow_url_include默认是On还是Off取决于题目作者的配置文件。以我刷过的经验来看这类入门题目为了降低难度通常会把allow_url_include打开这样你可以直接用data://写入webshell。但如果题目刻意关闭那就必须回到文件系统里去想办法。另外Docker环境的Web路径比较固定但又不绝对。有的题目容器用的镜像加了一层自定义目录导致我之前从/var/www/html出发穿越4层读不到/etc/passwd后来才发现实际工作目录是/var/www只需要3层就到底了。所以最稳妥的方法还是利用报错信息或者读一个已知路径的文件来确认。5. 从解题回到真实业务LFI的防御与修复5.1 代码层面怎么堵住文件包含题目刷完最重要的事情是从攻击视角切换到防御视角。如果让你去评审一套业务代码怎么才能杜绝LFI第一选择是白名单。不要信任任何用户输入的文件路径而是把允许访问的文件名列在一个映射表里用户传什么参数都只当作key来查表查不到就拒绝?php $allowedPages [ home home.php, about about.php, contact contact.php, ]; $pageKey $_GET[page] ?? home; if (isset($allowedPages[$pageKey])) { include($allowedPages[$pageKey]); } else { http_response_code(404); } ?这段代码里用户输入根本不会进入文件路径拼接的环节即使传了../../../../etc/passwd也只是查不到对应key直接返回404。这是最彻底的修复方式。第二选择是对路径进行严格净化。如果业务逻辑必须拼接路径那至少要做三件事用basename()限制文件名部分、用realpath()校验最终绝对路径是否在允许目录内、禁止文件路径中出现空字节和协议头。这里给出一个参考实现?php $allowedDir /var/www/html/pages/; $file basename($_GET[page]); $fullPath realpath($allowedDir . $file); if ($fullPath strpos($fullPath, $allowedDir) 0) { include($fullPath); } else { http_response_code(404); } ?realpath()会把../归一化为绝对路径然后再检查这个绝对路径的前缀是不是白名单目录这样路径穿越就失效了。第三个做法是关闭危险的PHP配置。allow_url_include Off必须设置虽然它默认就是Off但很多运维同学在配置php.ini时图省事直接复制网上模板可能会被意外打开。另外open_basedir应该限制到站点目录这样即使include被绕过也无法读取/etc/passwd、/proc/self/environ这类系统文件。5.2 中间件与运行环境加固代码层面的修复做完中间件层面也需要配合。Web根目录权限要最小化避免进程账户对系统文件有读取权限。Docker容器环境里尽量用非root用户运行PHP-FPM甚至可以用只读的根文件系统。日志文件不要放在Web根目录下防止被包含后直接展示给攻击者或者对日志目录做单独的禁止访问规则。如果你使用的是Nginx可以针对/proc、/etc等系统敏感目录配置deny规则Apache则用Require all denied。这些配置不能完全挡住LFI因为LFI是PHP进程读文件而不是Web服务器读文件但可以在攻击者尝试间接访问某些路径时多加一层障碍。另外重要的一点是及时安装安全更新。历史上PHP的filter链、phar反序列化等问题多次被绕过保持版本更新是成本最低的防御。5.3 从这道题延伸的学习路径最后聊聊刷完这道题之后还能学什么。LFI在CTF中往往不是终点而是起点。第一个延伸方向是日志投毒getshell。利用LFI包含Apache/Nginx的访问日志把恶意PHP代码通过User-Agent写入日志然后包含日志文件执行。这个技巧的核心难点在于确定日志路径、规避特殊字符转义。BUU这套课程如果学完COURSE 1后续大概率会出COURSE 2讲这个。第二个延伸方向是伪协议的组合利用。比如php://filter多层编码链配合错误日志写临时文件实现任意代码执行再比如phar://触发的反序列化攻击可以和任意文件上传漏洞配合形成一条完整攻击链。第三个延伸方向是代码审计思路。当你拿到一个真实PHP应用如何在其中快速找出include、require位置然后追踪参数是否用户可控。这是从“刷题”走向“实战”的核心能力。第四个方向是同类漏洞扩展。本地文件包含LFI的兄弟是远程文件包含RFI差别在于能否包含远程URL文件。虽然现代PHP默认关闭远程包含但在特殊配置或内网环境中依然可能出现。我的建议是找一套包含LFI的完整靶机来练手把读文件、读源码、日志投毒、执行命令、提权这条链路从头走到尾比刷十道独立的题印象更深。刷题的过程本质上是在积累“模式识别”看到一个参数就能联想到一类漏洞看到一个过滤规则就能想出几种绕过姿势。说实话等到你熟练了LFI再回头看你写过的每一段include代码都会比之前多一分警惕。文件包含漏洞是少数几个“只需几行PHP代码就能引爆整个服务器”的问题理解了它的原理你既能在CTF里拿分也能在真实业务里守住防线。希望这篇复盘能让你少踩几个坑也把这道题吃透。
企业数字化 ERP 产品动态
相关推荐
CTF杂项题soul sipse复盘:从伪加密到音频图片隐写 每次聊到CTF里的杂项题,我总会想起[GUET-CTF2019]soul sipse这道题。它不算难,但踩点特别全:下载下来是一个压缩包,解开之后又是一张图片和一段音频,最后还藏了一手steghide隐写和编码转换。对刚入门CTF的同学来说&… · 2026/9/24 19:08:12
Unity Addressables 异步操作句柄详解:加载、释放与内存管理实践 从 AssetBundle 时代靠手写加载流程、自己维护依赖树和引用计数,到切到 Addressables 之后只需要对着一个异步句柄操作,这个过渡期最容易让人懵掉的就是“Handle”到底是个什么东西。AssetBundle 那套逻辑里,我们习惯了“先加载 bundle&#… · 2026/9/24 19:07:53
地面油污水渍检测数据集:2093张图与2563个框的YOLO训练实战 简介:这份目标检测数据集面向环境监控、工业现场安全检测方向的研究者与算法工程师,聚焦地面油污水渍的识别与定位任务。数据包共2000个文件,以1999个VOC格式xml标注文件和1个说明txt为主,压缩包约70.05MB,图片为jpg格… · 2026/9/24 19:07:53
Python+requests实现视频下载:从基础到断点续传与m3u8实战 近期好多朋友问我同一个问题:网上看到想收藏的视频,浏览器自带的下载功能要么不给力,要么只能看不能下,到底怎么才能把视频弄到本地?我给出的答案基本都是同一个——用Python和requests库自己写个下载脚本。这不是炫技… · 2026/9/24 20:59:35
2026年加密软件平台选型指南:从个人工具到企业级方案全解析 1. 加密软件平台到底在解决什么问题聊加密软件之前,得先把一个概念理清楚:加密软件不是单一功能的产品,它是一类工具的统称。有人用它保护移动硬盘里的设计图纸,有人用它给客户发合同附件,有人用它管理整个公司的文件外… · 2026/9/24 20:59:34
从聊天框到AI团队:LobeHub排班制Agent协作实战指南 得先交代一下背景。我第一次打开LobeHub的时候,心里想的其实很简单:这不过是一个更好看的AI聊天网页。多换个模型、多几个话题分类、UI更精致,也就这样了。但后来我不经意间把三个不同职责的Agent挂了进去,又加了一层轻量调度&… · 2026/9/24 20:59:28
虚拟化技术实战:从CPU硬件指令到云平台故障排查 1. 这不是概念课,是运维现场的实战笔记“云计算与虚拟化技术详解”——看到这个标题,很多人第一反应是教科书目录、培训PPT封面,或是某次技术分享会上主持人念出的议程条目。但在我过去十年跑过的27个数据中心、亲手部署过412台物理服务器、处… · 2026/9/24 20:59:16
WPF+MVVM+YOLOv8工业视觉上位机实战:从选型到部署全解析 前阵子把手头一套 WPF YOLO 的工业视觉上位机从零搭到能跑产线测试,中间踩坑踩得挺多的。这套系统界面用 WPF 写,架构走 MVVM,检测算法用的是 YOLOv8 导出 ONNX 后的模型,最终在普通工控机上跑实时检测,界面也算干净好… · 2026/9/24 20:59:09
LobeHub实战:如何将Agent改造成可排班的AI协作团队 先把话放在前面:我第一次看到 LobeHub 这个项目,说实话先被 8.1 万 Star 的数量震了一下。这个量级放在整个开源 AI 应用里都属于头部梯队,可点进去之后我一度以为它只是个“长得挺好看的聊天界面”——多模型切换、会话管理、Token 用量统计… · 2026/9/24 20:59:09
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44