
简介这份文档是2022年全国职业院校技能大赛中职组网络安全赛项的完整赛题第9套面向职业院校网络安全参赛选手、指导教师以及备赛训练的学习者用于模拟真实赛场环境、检验技能掌握程度。赛题围绕基础设施设置与安全加固、网络安全事件响应与数字取证、CTF夺旗攻击与防御四大模块展开涵盖Windows与Linux双平台的密码策略、用户权限管理、SSH与VSFTPD及IIS中间件加固、iptables防火墙策略、Nmap扫描与Web渗透测试等具体任务并附有详细的分值权重与竞赛注意事项。资源包内仅含1个docx文档大小约49KB内容为完整赛题原文便于打印或对照练习。目前已有849人学习下载适合需要系统梳理赛项考点、开展模拟训练或进行教学参考的读者使用。1. 从一份中职组赛题 docx 说起网络安全竞赛试题9到底在考什么如果你手头拿到一份名为「2022 年全国职业院校技能大赛(中职组)网络安全赛项赛题网络安全竞赛试题9.docx」的文件第一反应大概率是这到底是一套 CTF 夺旗赛还是一份偏运维的安全加固任务书答案往往是两者都有。全国职业院校技能大赛中职组网络安全赛项典型结构是「理论 单兵闯关 团体对抗」三段式单兵部分常以 CTF 形式出现覆盖渗透测试、安全加固、数字取证、流量分析几大块团体部分则偏向攻防对抗和应急响应。这份试题9从命名看属于赛题序列中的一套完整任务包里面通常包含若干台靶机、若干道 flag 题、以及配套的加固与取证要求。对读者来说真正有价值的问题不是「这套题考了多少分」而是我能不能用一套通用方法论把这类赛题拆成可复现的操作流程答案是能。网络安全竞赛试题9这类赛题本质上是把渗透测试流程、安全基线检查、数字取证流量取证三条主线压缩进一个限时环境。你只要掌握「信息收集 → 漏洞定位 → 利用提权 → 加固修复 → 取证溯源」这条链路换一套题也只是换皮。下面我按自己带学生打比赛和做企业内训的实操顺序把这条链路拆开讲清楚重点放在每一步的命令、参数和翻车点而不是空谈概念。2. 赛题环境还原与信息收集从 docx 到可操作靶场2.1 先判断赛题类型再决定工具链拿到「网络安全竞赛试题9.docx」这类文件不要急着打开就做题。第一步是判断它属于哪一类赛制。常见做法是看文档结构如果里面有「任务一、任务二」并附带 IP 段、账号密码、服务列表那基本是靶场实操题如果只有零散描述和 flag 提交格式那更接近 CTF 单兵题。中职组赛题通常两者混合文档里会给出靶机 IP 范围比如 192.168.1.0/24以及一组初始凭据。我一般会先建一个工作目录把文档里的关键信息抽成一张表避免做到一半忘了哪台机器对应哪个任务。这一步看似笨但能省下大量来回翻文档的时间。信息项示例值用途靶机网段192.168.1.0/24扫描范围初始账号admin/123456登录测试目标服务Web、FTP、SMB决定工具flag 格式flag{xxx}提交校验加固要求关闭匿名访问任务清单2.2 用 nmap 做第一轮存活与端口扫描信息收集的核心命令是 nmap。不要一上来就全端口 -p- 扫先做存活探测和常见端口再针对性深挖。下面是我在赛题环境里常用的两段命令。# 第一轮快速存活探测不扫端口先确认哪些 IP 活着 nmap -sn 192.168.1.0/24 -oG alive.txt # 第二轮对存活主机扫常见端口带服务版本和默认脚本 nmap -sV -sC -p 21,22,80,135,139,443,445,1433,3306,3389,8080 192.168.1.0/24 -oN ports.txt第一段-sn只做 ping 扫描速度快适合先圈定范围。第二段-sV探测服务版本-sC跑默认脚本能直接暴露一些弱配置比如 SMB 匿名访问、FTP 匿名登录。参数上-oG和-oN分别输出 grep 友好格式和普通格式方便后续用 grep 过滤。注意赛题环境里如果开了防火墙禁 ping-sn可能漏掉主机这时要加-Pn跳过存活检测直接扫端口。2.3 Web 服务的信息收集与目录爆破如果扫描发现 80 或 8080 端口开放下一步就是 Web 信息收集。常见做法是先用 whatweb 或 curl 看指纹再用 dirsearch 或 gobuster 爆破目录。# 查看 Web 指纹和响应头 whatweb http://192.168.1.10 curl -I http://192.168.1.10 # 目录爆破指定常见后缀和线程数 dirsearch -u http://192.168.1.10 -e php,asp,aspx,jsp,html -t 20 -w /usr/share/wordlists/dirb/common.txt-e指定扩展名-t控制线程线程太高容易被 WAF 封 IP赛题环境一般 20 左右够用。字典优先用 dirb 的 common.txt体积小、命中率在赛题环境里反而高。如果目录爆破结果里有 admin、login、upload 这类路径就重点跟进。这里有个血泪经验很多中职组赛题的 Web 题并不考复杂漏洞而是考「默认口令 文件上传 一句话木马」这种基础链路所以看到登录框先试 admin/admin、admin/123456、guest/guest。3. 渗透测试实战从漏洞定位到提权拿 flag3.1 常见漏洞类型的快速验证手法赛题环境里的漏洞通常集中在几类SQL 注入、文件上传、命令执行、弱口令。验证 SQL 注入最直接的方式是手工加单引号看报错再用 sqlmap 自动化。# 手工测试在 id 参数后加单引号观察是否报错 curl http://192.168.1.10/news.php?id1 # sqlmap 自动化指定参数和数据库类型 sqlmap -u http://192.168.1.10/news.php?id1 --dbmsmysql --batch --dbs--batch让 sqlmap 自动选择默认选项避免交互卡住--dbs列出数据库。如果手工测试时页面返回正常但内容有变化可能是布尔盲注这时用--techniqueB指定盲注技术。命令执行漏洞常见于 ping 测试、文件包含这类功能点验证时用;id或|whoami拼接。# 命令执行验证假设存在 ping 功能 curl http://192.168.1.10/ping.php?ip127.0.0.1;id如果返回里有 uid 信息说明命令执行成功。接下来就是反弹 shell 或直接读 flag。注意赛题环境里反弹 shell 要确认靶机能不能出网很多内网靶场不出网这时只能用盲执行或写文件的方式。3.2 提权与 flag 定位的实操路径拿到低权限 shell 后提权是拿高分的关键。Linux 下先看内核版本、SUID 文件、定时任务。# 查看内核版本和系统信息 uname -a cat /etc/os-release # 查找 SUID 文件 find / -perm -4000 -type f 2/dev/null # 查看定时任务 cat /etc/crontab ls -la /etc/cron*SUID 文件里如果有 nmap、find、vim 这类可以直接用来提权。比如 find 有 SUID 时find . -exec /bin/sh -p \; -quitWindows 下则看补丁、服务权限、注册表。赛题里常见的 Windows 提权是 MS16-032、MS17-010 这类老漏洞用 msf 或对应 exp 即可。flag 通常放在/root/flag.txt、C:\Users\Administrator\Desktop\flag.txt或数据库里。如果找不到用find / -name flag* 2/dev/null全盘搜。3.3 安全加固赛题里的反向任务很多赛题不只要攻还要守。安全加固部分通常要求你修复刚才利用的漏洞或者按基线检查清单整改。常见加固项包括关闭匿名 FTP、修改弱口令、限制目录浏览、打补丁。以 Apache 为例关闭目录浏览和隐藏版本号# 在 httpd.conf 或 apache2.conf 中 ServerTokens Prod ServerSignature Off Directory /var/www/html Options -Indexes AllowOverride None /Directory改完重启服务systemctl restart apache2。加固后要验证用 curl 访问目录看是否返回 403用 nmap 看版本号是否隐藏。这里容易翻车的是改完配置没重启或者改错文件导致服务起不来。建议改前先备份cp httpd.conf httpd.conf.bak。4. 数字取证与流量分析从 pcap 里捞出 flag4.1 流量取证的基本流程与工具数字取证流量取证是赛题里区分度很高的一块。给一个 pcap 文件要求你找出攻击者 IP、被利用的漏洞、传输的 flag。我一般按「协议分层 → 会话重组 → 关键字搜索」三步走。工具首选 Wireshark 和 tshark命令行下 tshark 更适合批量处理。# 查看 pcap 的基本统计信息 capinfos capture.pcap # 列出所有 HTTP 请求 tshark -r capture.pcap -Y http.request -T fields -e http.host -e http.request.uri # 搜索包含 flag 的流量 tshark -r capture.pcap -Y frame contains \flag\ -T fields -e frame.number -e data.data-Y是显示过滤器-T fields指定输出字段。如果 flag 被分片传输需要先重组tshark -r capture.pcap -Y http --export-objects http,export_dir把 HTTP 对象导出来再在文件里搜。4.2 常见编码与隐写题的破解思路CTF 杂项题里经常出现编码嵌套和隐写。常见编码有 Base64、URL 编码、十六进制、Unicode。工具方面随波逐流 CTF 编码工具在 Windows 下很好用Linux 下可以用 CyberChef 的 CLI 版本或者自己写脚本。import base64 # 多层 Base64 解码示例 data ZmxhZ3t0aGlzX2lzX2FfZmxhZ30 for i in range(3): try: data base64.b64decode(data).decode() print(f第{i1}层: {data}) except Exception as e: print(f第{i1}层解码失败: {e}) break这段代码循环解码每层打印结果遇到异常就停。参数上base64.b64decode默认严格模式如果字符串里有换行或空格会报错可以加validateFalse。隐写题常见于图片用binwalk看是否附加了文件用steghide提取隐藏内容。# 查看图片是否包含附加文件 binwalk image.jpg # 提取附加文件 binwalk -e image.jpg # steghide 提取密码为空时直接回车 steghide extract -sf image.jpg4.3 日志分析与攻击链还原取证题有时给的是系统日志或 Web 日志要求还原攻击链。Web 日志重点看 200 状态码里带参数的请求尤其是 union select、../、cmd 这类特征。# 从 access.log 里筛选可疑请求 grep -E union|select|\.\./|cmd|exec access.log | awk {print $1, $7} | sort | uniq -c | sort -nr这条命令先过滤关键字再提取 IP 和 URL统计出现次数。出现频率高的 IP 大概率是攻击者。系统日志则看/var/log/auth.log里的登录失败和 sudo 记录。还原攻击链时按时间排序sort -k4 access.log把攻击者的每一步按时间线串起来。5. 避坑与常见问题赛题环境里最容易翻车的 5 个点5.1 扫描太猛导致靶机宕机或 IP 被封现象nmap 全端口扫描或 dirsearch 高线程跑了几分钟靶机 Web 服务无响应或者自己的 IP 被防火墙拉黑。原因赛题靶机配置通常不高全端口扫描加高并发会把服务打挂部分环境有 fail2ban 或 WAF触发阈值就封 IP。解决扫描分阶段先常见端口再全端口dirsearch 线程控制在 10-20如果被封换 IP 或等封禁时间过。我一般会在扫描前先ping一下靶机确认存活再动手。5.2 拿到 shell 后找不到 flag以为没提权成功现象低权限 shell 里find / -name flag*搜不到以为 flag 在 root 目录。原因flag 可能放在数据库、环境变量、或者需要特定用户才能读的路径。解决先env看环境变量再mysql -u root -p进数据库show databases;找最后看/home下各用户目录。Windows 下看注册表和C:\Users各桌面。别只盯着/root。5.3 加固任务改错配置导致服务起不来现象按加固要求改了 sshd_config 或 httpd.conf重启后服务失败远程连不上。原因配置文件语法错误或者改动了监听端口、绑定地址。解决改前备份改后用sshd -t或apachectl configtest测试语法确认无误再重启。如果是远程改 SSH先开一个备用会话别把唯一连接断了。5.4 流量分析时忽略分片和压缩flag 搜不到现象tshark -Y frame contains \flag\没结果但题目说 flag 在流量里。原因flag 被 gzip 压缩后传输或者分片在多个包。解决先导出 HTTP 对象tshark --export-objects http,dir再在导出文件里grep -r flag。如果是 TCP 流用tshark -z follow,tcp,ascii,0跟踪流看原始内容。5.5 编码题多层嵌套解到一半卡住现象Base64 解出来还是 Base64或者解出来是乱码。原因编码顺序搞反或者中间夹杂了 URL 编码、十六进制。解决用 CyberChef 的 Magic 功能自动识别或者写脚本按「先 URL 解码 → 再 Base64 → 再 Hex」的顺序试。注意有些题会故意加干扰字符比如在 Base64 里插换行解码前先strip()去掉空白。6. 进阶技巧用自动化脚本把重复劳动压缩到 10 分钟带过几轮比赛后我最大的习惯改变是不再手工重复敲同样的命令而是把信息收集和常见验证写成脚本。下面这个 Python 脚本输入一个 IP自动跑存活确认、端口扫描、Web 指纹、目录爆破输出一份简报。它不能替代手工分析但能把前 10 分钟的基础工作压缩到 1 分钟。import subprocess import sys import os def run(cmd): 执行命令并返回输出失败时返回空字符串 try: result subprocess.run(cmd, shellTrue, capture_outputTrue, textTrue, timeout120) return result.stdout except subprocess.TimeoutExpired: return [超时] def recon(target): print(f 目标: {target} ) # 存活确认 alive run(fping -c 1 -W 1 {target}) if 1 received not in alive and 1 packets received not in alive: print([!] 主机可能禁 ping继续扫描) # 端口扫描 print([*] 端口扫描...) ports run(fnmap -sV -sC -p 21,22,80,135,139,443,445,1433,3306,3389,8080 {target}) print(ports) # Web 指纹 if 80/tcp in ports or 8080/tcp in ports: print([*] Web 指纹...) web run(fwhatweb http://{target} 2/dev/null) print(web) # 目录爆破 print([*] 目录爆破...) dirs run(fdirsearch -u http://{target} -e php,asp,aspx,jsp,html -t 15 -w /usr/share/wordlists/dirb/common.txt --simple-report/tmp/dirsearch_{target}.txt 2/dev/null) print(f目录爆破结果已保存到 /tmp/dirsearch_{target}.txt) if __name__ __main__: if len(sys.argv) ! 2: print(用法: python3 recon.py 目标IP) sys.exit(1) recon(sys.argv[1])脚本逻辑很直白run函数封装 subprocess带 120 秒超时防止卡死recon先 ping 确认存活再 nmap 扫常见端口发现 Web 就 whatweb 加 dirsearch。参数上dirsearch 的--simple-report把结果存文件方便后续翻看。这个脚本的边界也很明显它只做信息收集不碰漏洞利用因为利用阶段需要根据具体服务手工判断。另外如果赛题环境有 IDS脚本里的扫描行为可能触发告警所以团体赛里我一般会先和队友确认扫描策略再跑。最后一个技巧是关于 flag 提交的很多赛题平台对 flag 格式敏感多一个空格或换行都会判错。我习惯拿到 flag 后先echo -n flag{xxx} | md5sum核对或者用cat -A看有没有隐藏字符。这个习惯帮我省过至少两次「明明对了却提交失败」的后悔药。希望帮到你。本文还有配套的精品资源点击获取