尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

线下攻防赛AD实战指南:从开局抢分到权限持久化与团队协作

线下攻防赛AD实战指南:从开局抢分到权限持久化与团队协作 简介《CTF Attack Defense线下攻防赛比赛技巧》是一份面向网络安全竞赛选手的技术文档聚焦攻击与防御并重的赛制系统讲解如何在高强度对抗中既会攻击也善防守。内容围绕Defcon CTF等真实赛场展开涵盖Web安全、逆向工程、密码学等常见题目类型并深入到服务端代码逆向、漏洞挖掘与利用编写、后门植入与清除、流量抓取分析、Flag管理与check机制等核心环节帮助读者快速建立线下攻防赛的完整认知。资源包共1个PDF文件大小8.32MB页面紧凑便于赛前翻阅或系统学习。当前已有501人学习下载是备战攻防赛的实用参考。通过研读读者能够掌握从攻击得分到防守加固的整套方法论包括如何从对手流量中定位漏洞、如何在保障服务正常的前提下修复风险以及如何在激烈对抗中高效夺取并守护Flag同时提升团队协作与临场决策能力。 不想看废话的话直接说结论线下攻防赛Attack Defense和线上解题赛根本就是两种游戏。线下赛里你再会逆向、再会审计如果不懂赛场节奏、不懂防守套路、不知道留权限后怎么不被对手踢出去照样一轮被按在地上摩擦。这篇文章我只讲线下AD真正用得上的东西从赛制逻辑、开局抢时间、权限持久化、应急修复到团队分工全是我自己参赛和当裁判时积累下来的实操经验照着调整就能直接提升你的线下赛成绩。1. 先搞懂线下赛的得分逻辑再谈技巧1.1 攻击与防御收益的天平线下攻防赛最常见的模式是每个队伍拿到一组配置完全相同的GameBox靶机网段互通每个服务里都埋着固定的flag。计分方式一般是攻击得分防御得分有些赛题还会加上服务可用性检查分。攻击分你从对手的靶机里拿到flag提交到计分系统得攻击分。flag有一定时效性通常一轮一换所以讲究的是持续、稳定、能定时打。防御分你的服务每轮被系统check存活且flag不能被对手偷走就能拿到防御分。服务可用性有些比赛会额外检查你的服务是否正常响应patch打崩了或者服务挂了直接扣分甚至清零。这带来一个很反直觉的结论大多数队伍在线下赛的第一优先级不是打出多刁钻的攻击而是别让自己的服务先挂掉。比赛前1小时真正拉开差距的往往不是你攻下几台机器而是你的服务稳不稳。1.2 三种扣分机制决定了你的防守策略不同比赛的扣分机制差别很大你必须在开场前问清楚主办方并针对性地决定防守策略。只扣服务可用性那你需要优先保证服务不宕机patch要轻量、可回滚。服务被对手打穿且flag被偷会有额外扣分这种情况下你必须优先修补最容易被击穿的漏洞哪怕牺牲一部分可用性也要堵住口子。每轮自动替换flag重复利用同一个漏洞可以反复得分这决定了攻击方必须写自动化脚本定时打而不是手动打一次就结束。我在裁判工作里见过太多队伍开局疯狂攻击、完全忘了守家结果自己服务的flag被对手脚本每轮一偷防御分全程几乎为0攻击分再高也补不回来。所以防守的优先级永远不低于进攻尤其在开局。2. 开局前两轮抢出第一波战果线下赛最刺激也最混乱的时刻就是开局。所有人同时开始扫描谁先掌握目标网段的完整信息、谁先打进第一台机器谁就掌握了主动。2.1 信息收集的优先级开局45分钟内你不需要做精细化渗透你要的是全覆盖、批量、快速识别。我用得比较顺手的顺序是网段扫描先确认自己队伍所在的网段比如10.10.10.0/24还是10.10.0.0/16。用nmap快速扫一遍存活主机-sV做版本探测-O做系统识别。有时主办方会给一个大的B段而GameBox通常只有少数几台IP你实际上要找的是和自己主机配置相同的额外主机。端口和服务识别重点看Web类服务、SSH、数据库服务。线下赛最常见的服务类型是Web应用PHP/Java/Node和PWN二进制题偶尔有Crypto/Misc服务但MVP通常是Web。指纹比对把每台GameBox的首页、响应头、服务版本、后台路径记录下来和线上的原始版本做比对确认靶机里被改了哪些地方。这一步的核心产出物是一份资产清单每台GameBox的IP、端口、中间件版本、Web路径、可能的漏洞点。我习惯直接在共享文档里列一个表格全队随时更新。2.2 常用的快速利用方法拿到指纹之后不要急着手工测漏洞。先把积累的EXP库过一遍按版本和路径匹配快速打一轮。如果有已知CVE对应到中间件版本直接用现成脚本打别浪费时间复现。Web应用优先看后台地址是否默认、配置文件是否泄露、是否存在SQL注入/文件上传/RCE点。二进制题先跑checksec、strings、寻找明显的栈溢出/格式化字符串出了结果再写exp。开局的黄金法则是跑脚本、批量打、抢第一波flag因为绝大多数队伍在开局半小时内还没完成加固漏洞利用成功率最高。我见过最快的队伍开局12分钟就把网段内所有同样配置的GameBox全部拿下后面一整场都在轮询拿flag优势非常大。3. 拿到权限只是开始攻防双方的持久战很多新手在线下赛犯一个错误打进一台机器、提交了flag就觉得自己赢了。实际上在AD赛制里你前脚拿到的shell后脚就可能被对手清理掉也可能是你自己一个不小心在防御的时候把自己权限干没了。3.1 怎样留一个不被打掉的权限权限持久化是线下赛最核心的技术之一。它的目标是在你打下一台GameBox之后即使对方加固、清后门、改密码你依然能快速拿回权限。常见的做法和注意事项WebShell不要只留一个默认路径的一句话木马。我建议写入多个位置比如静态资源目录、日志目录、临时目录且内容做简单混淆文件时间戳尽量伪装成和周围文件一致。命名不要用shell.php这种一眼看穿的用类似upload_2024.php、cache_temp.php这种。系统后门SSH免密钥、Cron反弹、启动项、PAM后门都是经典方案。但很多比赛的check机制会校验关键系统文件完整性随便替换系统文件容易被发现并判负所以在比赛环境里我优先用不修改系统关键文件的方式。多次留权不要只留一种后门。WebShell、SSH密钥、计划任务各来一个被清掉一个还有备用。记录操作日志谁打的、留了哪些权限、php在哪、密码改没改全部记录下来。线下赛一打就是一整天没有文档纯靠脑子记后期必崩。3.2 防御加固的优先级排序和操作要点防守的意义不只是不被扣分更重要的是让对手无法得分。你的服务越难打对手的时间和精力就浪费得越多变相削弱了他们的攻击收益。加固的优先级我按影响面从大到小排列修补最明显的漏洞比如SQL注入点、文件上传、默认后台口令、RCE点。最理想做法是从源码层面修复而不是简单改配置。限制访问来源如果比赛允许设置防火墙规则只允许主办方check IP段访问你的服务端口其他IP一律拒绝。这招在部分比赛中能极大地减小暴露面但要注意别把自己的攻击权限也挡在外面。改机密信息数据库密码、后台管理员密码、SSH密码全部换掉防止对手用默认凭据直接进。补丁的优先级优先修已经被别人利用的漏洞因为对手既然用了说明你挡不住必须马上堵。有一个很现实的问题patch不能拍脑袋改一定要先备份原文件并且在实际服务上验证不影响功能。我见过有人改一句SQL查询结果把整个页面打崩check直接不过防御分扣穿地心。任何修改都要在赛前练过才能确保赛场上手稳心不慌。4. 实战中的翻车现场高频故障和补救操作线下赛的赛场上没有一帆风顺这回事。服务被打崩、后门失效、对手把flag提交频率比你高……每一种突发情况都可能让队伍心态爆炸。这里列几个最高频的问题和我的处理习惯。4.1 Patch打崩服务的急救流程这种痛我记忆太深了。有一次比赛里队友说我修一下SQL注入结果把一个或写成了||整个服务白屏check直接扣分比赛一度接近崩盘。从那以后我定下了铁规矩任何patch操作前先cp一份原文件到独立目录。修改后立刻本地请求一次确认返回正常。如果服务已经挂了最快的抢救方式是直接回滚原文件然后再小步重试。如果完整源文件不方便回滚至少你得保留补丁前的内容。备一个恢复脚本一键恢复到最初状态在这个场景下比什么高级操作都实用。4.2 后门被清、服务被关的对抗手段线下赛里对手也在用扫描器也会批量查WebShell留痕、SSH密钥和Cron任务。一旦发现你的权限掉了不要慌先判断是服务重启了还是权限被主动清除了。如果是服务重启查看启动脚本和日志确认自己的持久化方式是不是被关机流程清掉了。换个更隐蔽、更稳定的方式重新留权。如果是被对手清除说明有人已经进入了这台GameBox。你要立刻做两件事一是通过另一条备用后门快速拿回权限二是把自己服务的入口再加固一遍别让对手继续用同一个点打进来。如果实在找不到任何入口了就走重建路线从你的另一台可控GameBox上重新攻击或者利用其他队伍已经丢弃的漏洞点逐步探回。这个阶段最忌讳的是单线程操作——全队都在商量怎么打回去没人管其他服务。任何时候至少留一个人盯防御分和check状态。5. 攻防赛怎么排兵布阵团队协作的细节线下攻防赛本质是团队赛。个人能力再强不解决写作流程、分工混乱、信息不共享的问题成绩一样很难看。5.1 角色切分和轮值节奏我见过最理想的线下赛分工是攻击组1-2人负责扫描、打洞、写exp、批量拿flag保持对全场GameBox的控制力。防御组1-2人负责加固自己队伍的服务、监控check状态、修复漏洞、回滚问题补丁。机动/情报员1人盯计分板、看其他队伍的攻防动态、从流量/日志中分析对手行为第一时间同步重要信息。队长通常是防御或情报兼任负责决策优先级、控制节奏、保证大家不内耗。轮值很重要。线下赛通常持续8小时以上人不是机器长时间盯着屏幕反应会变慢。哪怕只有三个人也要排出主攻/主防/休息的轮换。我在比赛后半程见过太多因为熬夜导致的操作变形完全是可以通过轮值避免的。5.2 信息资产清单和自动化脚本一个共享文档或共享目录是整个队伍的大脑。从第一轮扫描开始就把以下内容记录下来每台GameBox的IP、服务、端口、漏洞点、已知exp路径。每台机器的权限持久化方式、密码、后门位置。所有对手的攻击行为和利用过的漏洞点这部分信息可以从日志、流量、自己的被攻击记录里收集。当前比分、check状态的更新时间。自动化脚本的沉淀同样重要。我赛后会总结一批模板快速提交flag的脚本、定时批量打同一漏洞的脚本、自动检测服务存活状态的脚本。比赛时直接复用模板把时间省下来投入更复杂的对抗里。需要尤其注意的一点脚本里的账号密码和端点信息要提前写清楚换人接手时不会看不懂。线下攻防赛的魅力在于它模拟了真实的对抗压力时间紧迫、对手不配合、服务还会出各种幺蛾子。我打了几年下来最大的体会是真正决定名次的不是某一次精彩的攻击而是每一个细节的稳定累积。从开局的资产收集到中场的权限持久化再到后期的团队协作每一步都值得反复练习。顺便说一句赛前一定把常用的扫描脚本和exp库整理成自己的武器库比赛时随取随用这会让你在起跑线上就快人一步。希望这篇经验复盘能对准备参加线下赛的你有点帮助赛场见。本文还有配套的精品资源点击获取
返回列表