免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

ISG信息安全竞赛题型全解析:五类考点与备赛策略

ISG信息安全竞赛题型全解析:五类考点与备赛策略 简介一份聚焦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分钟如果还是做不出来说明当时复盘的解法没有真正转化成能力。这个“隔天复现”的习惯我保持到现在几乎每场比赛都用它来检验自己有没有进步。希望帮到你。本文还有配套的精品资源点击获取
返回列表