☰
ISG信息安全竞赛题型全解析:五类考点与备赛策略
2026/9/25 2:11:50 网站建设 项目流程

简介:一份聚焦ISG信息安全竞赛核心题型与备赛要点的Word文档,适合参赛选手、网络安全学习者及高校相关专业学生快速了解CTF式竞赛的考察范围。内容系统梳理了比赛的五类典型题目:Web漏洞与渗透、软件逆向、漏洞挖掘与利用、密码学原理及应用、其他杂项(如隐写术、取证、网络流量分析),并对Web安全中的SQL注入、XSS与PHP/Java源码审计,逆向中的APK分析与反调试,漏洞利用中的缓冲区溢出、shellcode,密码算法分析,以及flag提交规则等关键考点展开说明,可帮助读者搭建系统化的备赛知识框架。压缩包内含1个docx文件,总体约27KB,轻量便携,方便下载后快速查阅。已有200人学习浏览,通过这份整理,读者可在短时间内建立对ISG各分类题型、分值设置与竞赛规则的清晰认知,为备考CTF类竞赛提供简洁的入门指引。

1. ISG信息安全竞赛:一份把备赛范围框死的题目类型清单

报名ISG信息安全竞赛之后,很多选手做的第一件事是去找刷题平台,第二件事就是被海量题目淹没。我翻完《ISG信息安全竞赛题目类型》这份文档才发现,ISG线上赛其实把考察范围卡得非常死:Web漏洞与渗透、软件逆向、漏洞挖掘与利用、密码学原理及应用、其他杂项,一共五类,每类4到10题,分值从50分到500分,flag格式统一是ISG{可见字符串}。这两年四川省第三届网信行业技能竞赛这类职业赛,也大量吸收了同一套题型框架。

这份文档适合两类人:第一次参赛、对CTF只有模糊概念的新手,需要带学生备赛的指导老师。它不教你具体某道题怎么写,而是把整个赛事的边界提前画好——先读懂题型,再决定刷什么,能少走不少弯路。

2. 赛制与题型范围:看懂ISG这五类题再决定练什么

2.1 “参考CTF竞赛模式”到底意味着什么

ISG的线上答题环节明说了“比赛形式参考CTF竞赛模式”,但参考不等于完全复刻。CTF有解题赛、攻防赛、混合赛几种主流形式,ISG线上赛更接近解题赛:主办方把题目按分类挂到竞赛平台上,选手登录后逐题击破,解出之后提交一个唯一flag,平台根据提交结果给分。文档里“使用收到的帐号登陆竞赛平台进行线上答题”这句话,已经把流程说透了,所以平时训练就要按解题赛的节奏来,而不是花太多时间练攻防对抗脚本。

文档里还有一句容易被忽略的话:“主办方会视比赛进度逐步开放各类题目”。第一次参赛的人很容易把这句话读成废话,但它其实是比赛策略的关键信号:前期通常先开放低分值的Web和Misc题,用来筛掉纯蹭赛的队伍;中后期才把逆向、Pwn、Crypto的高分题放出来。这意味着备赛排序不能平均用力,而是按“前期题保证拿分、后期题保证有思路”来安排。

从训练角度回头看,这也解释了为什么文档把“操作系统和网站应用服务器安全”放在Web类最前面。操作系统安全不是独立考点,而是渗透链上的一环:先利用网站漏洞打进服务器,再通过操作系统特性提权、清理痕迹。比赛里常见的Web题基本都按“代码审计→漏洞利用→提权→拿flag”这条链去设计,而服务器这块恰好就是操作系统安全知识的落点。

2.2 五类题目的考察范围拆解

文档把题目切成五类,我一般会用一张表把官方描述和实际考点对应起来:

题目分类官方考察范围关键词常见出题形式需要掌握的语言/工具
Web漏洞与渗透操作系统与服务器安全、PHP/Java源码、SQL注入、XSS、提权、补丁网站后台漏洞、源码审计包、SQL注入点PHP、Java、SQL、Burp Suite、Linux命令
软件逆向Windows/Linux/Android、x86/x86_64/ARM、反编译、脱壳、APK二进制程序、加壳程序、APK文件C、汇编、IDA/Ghidra、x64dbg、jadx
漏洞挖掘与利用二进制漏洞、缓冲区溢出、格式化字符串、shellcode带漏洞的ELF/EXE、远程pwn服务C/C++、Python、pwntools、GDB
密码学原理及应用古典密码、现代密码、协议分析、加解密密文文件、加密流量、RSA参数Python、Sagemath、OpenSSL
其他杂项信息搜集、编程、隐写术、取证、流量分析图片/音频隐写、内存镜像、抓包文件Python、Wireshark、binwalk、strings

这张表对备赛的价值在于:文档里每一类都写得很笼统,比如“Web漏洞挖掘和利用”,具体到题目究竟是SQL注入还是XSS,甚至是反序列化,你得自己把范围缩小。我自己复盘ISG和同类竞赛时发现,出题人会在一个分类里把知识尽量铺开,但不会跨类混着考。所以准备时,每个分类至少要有一个“能拿得出手的解题套路”,而不是每个分类都会一点皮毛。

再拎出文档里最容易被看漏的一句话:“网站多种语言源代码阅读分析(特别是php和java)”。这句话在Web类里单独占了一条,说明ISG不只看你会不会用工具,还看你能不能人工把PHP或Java项目的执行链路读明白。Java方向在ISG里多表现为中间件漏洞和反序列化,PHP方向则更常见于变量覆盖、文件包含、SQL注入,这两条线最好分开练。

2.3 分值、题量与flag提交规则:出题人的算盘

文档写的“每一个分类4至10题不等,分值从50分到500分不等”,这组数字其实是出题人画的一幅作战地图。50分的题通常只考一个点,比如一眼能识别的base64、一个无过滤XSS,目的是让更多队伍能参与进来;300分以上的题往往是两个知识点的组合,比如“Web拿下shell之后进内网再提权”,或者“流量包里先解出加密数据再做密码分析”;500分题基本是综合应用,可能要把逆向和密码学串起来。

“每道题目都对应唯一的flag,且限制最大提交次数”这句话,很多人只看到“唯一”,没看到“限制次数”。最大提交次数相当于给每个队伍设置容错上限,常见设置是每道题3到5次提交机会,防的是脚本枚举flag。训练时如果不按“限制次数”的条件练,比赛时你会有很强的挫败感:我见过有人把提交机会全浪费在缺少几个前缀字符的flag上,最后只能干瞪眼。

所以从分值、题量和flag规则反向推,备赛重点应该是“判断flag格式并一次写对”。ISG的flag格式固定为ISG{可见字符串},可见字符串可能是单词、短句、哈希值或uuid。我的习惯是:每道题解出后,先把可能有用的字符串列出来,再和题目语境对照,选出最像flag的那一个,而不是随手粘贴。很多50分题丢分不是因为没解出,而是因为提交的flag里多了空格或少了一个字符。

提示:比赛前把题目类型文档里“flag的形式为ISG{可见字符串}”单独抄在记事本第一行,每次提交前对着看一眼,能省下三分之一的无效提交。

3. 把题目类型拆成训练动作:Web、逆向、Pwn、Crypto、Misc怎么练

3.1 Web方向:以PHP和Java源码审计为圆心搭靶场

从文档描述看,Web是五种类型里范围最宽的一类:既考操作系统和网站应用服务器安全,又考多种语言源码阅读,还要考SQL注入、XSS、提权和补丁编写。我给新手定的练习路线是:先用两周把SQL注入和XSS的常见场景过一遍,再用两周集中读PHP小项目源码,最后用一周补服务器提权和补丁修复。

动手第一步是搭本地靶场。常见做法是直接拉DVWA,因为它把SQL注入、XSS、CSRF、文件包含、命令注入全揉在一个环境里,一条命令就能启动:

docker run -d --rm --name dvwa -p 8080:80 vulnerables/web-dvwa

启动完成后,浏览器打开http://127.0.0.1:8080,默认账号是admin/password。DVWA的PHP代码里有安全等级设置:low级别不带任何过滤,适合理解漏洞原理;medium级别开始出现简单过滤和转义;impossible级别接近ISG比赛难度。我建议练习时从low看漏洞现象,从medium开始练绕过思路。

参数说明:-d表示后台运行,--rm是容器停止后自动删除,-p 8080:80把容器的80端口映射到本机8080。这套命令在Windows、Linux和macOS上都能用,前提是本机装了Docker。

但DVWA只覆盖Web漏洞的一部分,源码审计还需要单独练习。ISG考的是“阅读分析网站源码,特别是php和java”,所以要有目的地读真实项目源码,而不是只看教程里十几行的demo。常见做法是在本地用Docker部署一个旧版本开源CMS,然后带着“找SQL注入点”的目的去通读入口文件,定位用户输入在哪一步进入SQL查询、过滤在哪一层失效。这一套走完,比赛里遇到源码包题才不会慌。

3.2 逆向方向:按“架构-平台-工具链”三轴准备

文档里逆向的官方描述很长:Windows/Linux/Android三个平台,x86/x86_64/ARM三种架构,还要会反编译、反汇编、脱壳、调试、加解密、内核编程和代码混淆。看到这里先别慌,比赛里单个逆向题只会覆盖其中一两个点,这份文档更像总目录,告诉你逆向分类的天花板在哪里。

我的准备习惯是“按平台固定工具链”:Linux下的ELF文件,用Ghidra做反汇编、GDB做动态调试;Windows下的EXE,用IDA或x64dbg配合脚本插件,基本覆盖脱壳和调试需求;Android的APK,先用jadx直接看反编译源码,再用apktool解包看资源文件和smali,拿不准就上frida做动态插桩。

这里有个新手容易忽略的细节:文档特意写了x86/x86_64/ARM三个架构,意味着逆向题不只在PC上出。ARM架构题目经常以Android APK或嵌入式固件形式出现,x86_64则常见于Linux和Windows的二进制。备赛时至少要知道arm和x86在常见特征上的区别,比如函数调用约定、寄存器名,这样拿到一个arm二进制时不会完全懵。

APK逆向在ISG里是独立考察点,出题形式通常是:给一个apk文件,里面有加密字符串或关键逻辑,需要重打包或动态hook才能拿到flag。我一般会先跑一遍jadx看java层,如果发现关键逻辑在so库里,就转用IDA看arm汇编;如果发现代码有混淆或加固,就先想办法脱壳。这正好对应文档里提到的“反调试和代码混淆技术”。

3.3 Pwn方向:缓冲区溢出、格式化字符串与shellcode的递进路线

Pwn这个分类在文档里叫“漏洞挖掘和利用”,看起来最劝退,但它有最清晰的练习顺序:先理解内存布局,再做缓冲区溢出,接着做格式化字符串,最后才是写shellcode。ISG里这个分类的题集中在Linux x86/x86_64平台,Windows出现的频率相对低一些。

缓冲区溢出的最小实践可以这样搭:写一个带漏洞的C程序,编译时关闭现代编译器的保护机制:

gcc -fno-stack-protector -z execstack -no-pie -o vuln vuln.c

-fno-stack-protector是关闭栈保护,-z execstack是允许栈上执行代码,-no-pie是关闭地址随机化。这三个参数把题目环境降到最原始状态,让你直观看到溢出点和返回地址之间的关系。比赛里的题目不会关得这么干净,通常还有ASLR和canary,但最小原型能帮你理解为什么后续利用要绕过canary、为什么ROP要借libc。

等溢出流程跑通之后,再去专门练格式化字符串。格式化字符串攻击在文档里是单列出来的,它和缓冲区溢出不是一回事:缓冲区溢出是写坏了返回地址,格式化字符串是利用printf类函数的格式化参数来读内存或写内存。比赛里两者经常组合:先用格式化字符串泄露canary,再通过溢出覆盖返回地址。

shellcode在ISG的Pwn题里更像最后临门一脚。我的做法是先用pwntools自带的shellcraft生成shellcode,再手动读一遍生成的字节码,确认每条指令在干什么。如果比赛环境限制只能执行很短一段shellcode,那就需要自己写汇编,这时候文档里要求的“C/C++/Python/汇编等语言”就派上用场。

提示:Pwn题第一次连远程,先发一个普通字符串确认连接和输入输出正常,再上payload,避免把连接问题误判成偏移问题。

3.4 Crypto与Misc:最被低估的两个得分板块

Crypto和Misc在ISG里看着最难,其实是普通人拿分最快的两个板块。

Crypto部分,文档明确要求“掌握古典密码学和现代密码学,分析密码算法和协议”。我的训练路径是先把古典密码全过一遍:凯撒、维吉尼亚、栅栏、培根等,每种密码都有明显特征,比如凯撒是字母整体偏移,维吉尼亚是周期性不同偏移。再进到现代密码,重点放在RSA和AES的常见错误用法上。比赛里RSA题翻来覆去就是几个固定错误点:n可以被分解、e很小、m直接等于c、两个n共用了素数。这些不是深奥的数学,用Python写几十行脚本就能解。

Misc部分的内容更杂:信息搜集、编程能力、移动应用安全、隐写术、信息隐藏、计算机取证、文件恢复、网络流量分析。文档把“网络基础以及对网络流量的分析能力”放在最后,量级却不轻。我的建议是用binwalk和strings两个命令打底:binwalk用来检测文件里是否嵌入了其他文件,strings用来直接抽取可打印字符串。这两个命令能解决Misc里三四成的题目,剩下的取证题要补一些内存镜像分析的知识。

ISG的Misc还有一个特点:它可能把一个题目伪装成Web题,比如给你一个流量包,让你从HTTP请求里还原攻击过程。这就是文档里“网络基础”和“编程能力”交叉的体现。所以练Misc不能死记工具,要能快速判断出题人把flag藏在了哪个载体里。

4. 常见问题与避坑:ISG备赛路上五个高频翻车点

网上关于ISG和同类竞赛的实战复盘很多,CSDN上每年赛后会冒出一大批WriteUp。我翻过之后发现,翻车点高度集中在下面五个地方,每条都按现象、原因、解决的顺序来拆。

4.1 现象:Web题给了源码,却在PHP/Java审计里绕不出来

现象:打开源码压缩包,发现几十个PHP或Java文件,不知道从哪个文件开始读,最后只能翻工具扫描报告,扫描报告又没给出可直接利用的路径。

原因:跳过了“入口文件优先”的常规流程,没有先确定用户输入从哪里进入程序,而是试图逐个文件通读,时间全耗在无关代码上。

解决:我一般会先找index.php、路由配置文件、公共请求处理函数这三类文件,用全局搜索定位$_GET、$_POST、request.getParameter这一类输入接收点,再顺着输入点往后看它是否进入SQL查询、文件包含或反序列化函数。ISG文档里点名php和java,就是因为这两种语言的Web框架特征明显:PHP可以直接找超全局变量,Java要先看路由注解或web.xml映射。代码审计的本质是顺着数据流找危险函数,不是读完全部代码。

4.2 现象:逆向题一头扎进IDA,半天才发现套了壳

现象:静态分析一个EXE,函数列表里几乎看不到有效逻辑,动态调试一运行就退出,折腾两小时后才意识到程序有壳,重新脱壳时已经没时间了。

原因:没有先做“查壳”这个动作。逆向的第一步不应该是反汇编,而是通过文件属性和入口点特征判断程序有没有加壳、是什么壳。

解决:拿到二进制文件,先跑一遍查壳工具,再决定下一步。不方便用工具时,用十六进制查看器看程序入口点附近有没有明显的加壳特征;对APK,先看包名和签名,再进jadx看代码。文档里写的“反编译乃至反汇编逆向工具和脱壳、调试技巧的熟练掌握”,顺序本身就是答案:先脱壳,再反编译,再动态调试。

4.3 现象:Pwn题确定是溢出,交互脚本却总把偏移算错

现象:本地能稳定打到shell,改成远程交互之后每次都在第几个字符之后崩溃,或者payload发过去一点反应都没有,怀疑人生。

原因:常见坑是本地环境和远程环境的字长、libc版本、输入输出缓冲不同;更基础的坑是对偏移计算没有用调试器验证,而是靠手数。

解决:我一般把溢出偏移的确认拆成三步:第一步用cyclic生成一段特征字符串发给程序,让程序崩溃并记录崩溃地址;第二步用gdb的偏移计算功能或pattern命令定位偏移值;第三步用python的struct.pack把payload重新拼好,确保地址按小端序写入。ISG的Pwn题限制提交次数,但不会限制本地调试,所以任何远程payload都必须先在本地跑通,再改连接地址。

4.4 现象:Crypto题分不清密码类型,把时间耗在手算上

现象:看到一串字符串,先试base64,再试hex,再试凯撒,来回折腾一小时,最后发现是RSA解密后的十六进制结果。

原因:没有先建立“密码特征识别”的流程。不同密码形态的输入输出差异明显:base64只有大小写字母和数字加号斜杠,hex全是0-9和a-f,凯撒密文和明文字母表结构一致。没有快速判断,就只能靠瞎试。

解决:我维护一个快速检查清单:先看字符集,判断是hex、base64还是ASCII码;再看长度和结构,判断是不是哈希;最后根据题目给的附加条件判断是不是分组密码。比赛时时间很宝贵,用python写一个十几行的自动识别脚本,把常见编码一次跑完,比手动判断快得多。ISG文档里写“计算密钥和进行加解密操作”,前提是先判断出用了哪种算法。

4.5 现象:Misc流量题人肉翻包,flag近在眼前却看不见

现象:打开一个pcap文件,有一千多个数据包,手动往下翻了几百个包,眼睛已经花了,flag其实就在某一次HTTP请求的响应体里。

原因:流量分析没有用统计功能,直接把流量包当成文本读。正确顺序是从总体到细节:先看协议分布、TCP会话数、HTTP请求的host列表,锁定可疑会话,再逐层深入。

解决:我一般会先用Wireshark的统计菜单看协议分层,再按HTTP、DNS、TCP顺序过滤,最后用“导出对象”直接把传输过的文件提取出来。很多ISG流量题把flag藏在图片传输或HTTP响应里,过滤和导出比人肉翻包快十倍。文档里“网络基础以及对网络流量的分析能力”不是让你背协议,而是让你知道每种协议在Wireshark里怎么筛、怎么追。

5. 从文档到赛场:一份可执行的备赛清单与提交策略

5.1 按五类条目建能力自检表

文档五类题对应五条能力线。备赛到一半最容易出现的问题是“什么都练了,什么都不深”。我常用的办法是给每一类做一张自检表,用“能讲原理/能完成最小利用/能修复”三个等级给自己打分:

分类最低标准(能拿50分题)进阶标准(能拿200分题)高阶标准(能拿500分题)
Web能看懂SQL注入报错并手动闭合能读PHP/Java源码定位注入链能结合提权与补丁编写完成整条攻击链
逆向能用strings和IDA查看关键字符串能解混淆、脱壳、分析APK能还原算法并写出注册机
Pwn能识别溢出点并控制返回地址能绕过canary和ASLR能编写shellcode完成利用
Crypto能识别常见编码和古典密码能用python实现RSA基础攻击能分析协议并构造攻击报文
Misc能用binwalk分离文件、strings查看隐藏信息能用Wireshark分析流量定位flag能结合取证与文件恢复还原完整攻击链

这张表对应的就是文档里的题库架构:每个分类4到10题,最低标准那道题接近50分难度,进阶标准那道题接近200分难度,高阶标准那道题接近500分难度。备赛时先把自己每一项推到“最低标准”,保证比赛前中期能稳定拿分,再根据剩余时间冲刺“进阶标准”。我一般每两周更新一次这张表,把已经达标的项目划掉,剩下的就是下一阶段的主攻方向。

5.2 赛前两周的模拟流程:把提交次数当成稀缺资源

ISG和很多CTF练习平台不一样的地方在于“限制最大提交次数”,这意味着平时的刷题习惯要改。在练习平台上无限制提交flag,试错成本是零;到了ISG赛场上,试错成本就是一道题的分值。我在赛前两周会用自定义规则做模拟:每道题不管有没有解出,只允许提交三次,三次都错就跳过,等所有题过完一遍再回头处理剩余次数。

模拟时还要复现“逐步开放题目”的节奏。常见做法是第一天只做Web和Misc的低分题,第二天允许做Crypto和逆向题,第三天开放Pwn的高分题。这样练出来的节奏感,比一口气把五类全做一遍更接近真实比赛。比赛当天,我的建议是先花20分钟把所有已开放题目扫一遍,把题目的分类和分值记下来,按“先易后难、先高分后不确定”的顺序进攻。

还有一个容易忽略的细节:文档里写了“参赛团队”,说明ISG是团队作战。赛前要提前分好工,比如一个人盯Web和Misc,另一个人盯Crypto和逆向,Pwn作为机动位谁有空谁上。比赛时最怕的就是五个人挤在同一道题上,其他四类题晾在那里没人管。分工这件事看起来和题型无关,但对总分的贡献比多刷十道题还大。

5.3 用文档反推陌生题的解题入口

比赛里一定会遇到从未见过的题目类型。这时候别急着硬解,先把文档里五类题的描述当成一个分类器。比如:题目给了一个Android APK,同时给了一个远程服务器地址,文档里“Android移动应用APK文件的逆向分析”和“操作系统和网站应用服务器安全”两条,就能帮你判断这道题的入口在APK里的某个加密参数,出口在服务器端验证。

再比如:题目只给了一个网络流量包,没有任何提示,文档里“网络基础以及对网络流量的分析能力”和“计算机取证技术和文件恢复”基本上把解题路线指出来了:先过滤流量,再导出对象,再尝试文件恢复。用文档反推不是猜,而是把陌生题映射到已知分类,再利用这个分类的固定解题流程去试探。ISG这个比赛的题目虽然会换壳,但骨架一直在,因为文档已经把骨架写在明面上了。

6. 赛后验证习惯:用“技能树复盘”把题型文档变成自己的题库

赛后真正拉开差距的动作是复盘。比赛结束当天,趁着记忆还热,我会把每道题按文档五类做一次标记:题号、分类、涉及的知识点、卡住我的环节、最终解法。这个动作比收藏WriteUp有用得多。等ISG官方或参赛选手在CSDN等平台发复盘文章之后,我再把自己的记录和别人的WriteUp对照,补上自己没想到的那一步。

复盘的目的不只是知道解法,而是更新自己的技能树。比如一道Misc题卡在流量分析,就在Misc分支下记录“Wireshark统计使用不熟”;一道Crypto题卡在RSA分解,就在Crypto分支下记录“需要补充大整数分解工具的使用”。等技能树攒上两轮比赛,你会发现需要复习的只有几个固定节点,而不是从头再刷一遍。

验证方法也简单:下一次训练时,把技能树里记录过的薄弱节点专门挑出来,限时30分钟,如果还是做不出来,说明当时复盘的解法没有真正转化成能力。这个“隔天复现”的习惯,我保持到现在,几乎每场比赛都用它来检验自己有没有进步。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询