十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

奇安信校招笔试解析:安全岗核心考点与备考思路

奇安信校招笔试解析:安全岗核心考点与备考思路 算起来这应该是做奇安信2019校招笔试题四解析那阵子的事了。当时我正集中刷各家安全厂商的校招真题刷到这套题的时候第一感觉是“稳”——题目不偏不怪覆盖的点都很基础但想拿高分并不容易因为出题人特别擅长在看似简单的知识点上挖坑。后来带过几个准备校招的学弟学妹我都会把这一套题拿出来让他们做一遍算是摸底测试。不是因为它最难而是因为它最能反映一个安全方向应届生的基本功扎不扎实。这篇文章我就以这套笔试题四为线索把里面的核心考点、解题思路、容易踩的坑以及我后来复盘整理出来的备考方法一次性说清楚。不管你是准备投奇安信还是目标其他安全厂商这套题背后的考察逻辑都是共通的看完应该能帮你省不少事。1. 先搞明白这套笔试到底在筛选什么样的人1.1 安全岗校招笔试的本质不是考记忆很多同学第一次做安全岗的笔试容易陷入一个误区拼命背漏洞列表、记端口号、背命令参数。但如果你真的把奇安信这套2019校招笔试题四完整做下来会发现一个很明显的特点——它考察的不是“你知道多少知识点”而是“你能不能像做安全的人一样思考”。举几个典型的点题目会给你一段很短的代码让你判断存在什么漏洞或者给你几条日志让你还原攻击者的行为路径再或者给你一个网络拓扑片段让你分析数据包的流转过程。这些题目没有一个需要你死记硬背但如果你平时没有建立起安全的思维方式做起来会非常难受因为你不知道从哪个角度切入。所以这套题的真实目的是通过有限的题目快速判断你具不具备安全从业者的三个底层能力信息收集与分析能力、攻击链路的敏感度、防御视角的全局观。理解这一点比多刷十道题都重要。1.2 题型分布和分值逻辑从整体结构来看这套题四的题型大致分四类客观选择题、判断题、简答分析题、编程题。客观题覆盖计算机网络、操作系统、密码学基础简答分析题集中在Web安全漏洞、日志分析、安全加固这些方向编程题考的是最基本的算法和字符串处理能力难度不大但要求代码规范。这里有个备考性价比的问题需要说清楚。客观题多意味着你只要把基础知识过一遍拿基础分是不难的简答分析题少但分值大是拉分的关键编程题通常只有一道但做不出来会直接影响整体印象。所以复习重心应该放在“把基础题的正确率拉满把分析题的思路练熟编程题保证AC一道是一道”。这也解释了为什么我后来给学弟学妹的建议里总是强调先搭知识框架再刷题而不是一上来就抱着题库背。2. 核心考点拆解五大模块逐一过一遍2.1 计算机网络与协议安全基础但最容易丢分这一模块是整套题的送分题但也是丢分重灾区。常见考点有TCP三次握手和四次挥手的过程、HTTP状态码的含义、DNS解析流程、Cookie和Session的区别、HTTPS的握手过程。我印象比较深的一道题是给了一串HTTP报文问Cache-Control和Expires的区别以及哪个优先级更高。这题看起来简单但很多人会答反。关键在于理解两者都是控制缓存的头部但Cache-Control是HTTP/1.1的标准优先级高于HTTP/1.0时代的Expires。题目还延伸问了一个实际场景如果服务端不希望客户端缓存页面应该怎么设置响应头。答案就是Cache-Control: no-store而不是no-cache——这两个经常混no-cache是指可以缓存但使用前必须回源验证no-store才是完全禁止缓存。这个知识点为什么值得重视因为它很能体现“基础扎不扎实”。实际做Web安全测试时缓存相关头配置不当可能导致敏感页面被中间设备缓存造成信息泄露。笔试考这个点出题人其实在暗示安全不是脱离业务的脱离网络协议谈安全是空中楼阁。2.2 Web安全漏洞从代码片段反推风险的能力Web安全是整个安全岗笔试的核心模块奇安信这套题四也不例外。常考的漏洞类型集中在SQL注入、XSS、CSRF、SSRF、文件上传、命令注入、反序列化。出题方式通常是给一段精简的代码或一个场景描述让考生判断漏洞类型及成因。比如有一道题给出了类似下面的PHP代码片段$id $_GET[id]; $sql SELECT * FROM users WHERE id . $id; $result mysqli_query($conn, $sql);这道题考的就是SQL注入而且是典型的数字型注入。很多人能说出“有SQL注入”但进一步追问为什么就说不清楚了。这里的关键在于$id直接来自用户输入没有做任何类型校验和过滤拼接到SQL语句中导致用户可以控制SQL执行逻辑。比如传入1 or 11就能绕过条件限制。如果题目继续追问如何修复至少要说出来“使用参数化查询或预编译语句”而不是只想着加个WAF。另一个常考的是XSS题目通常给一个搜索框的渲染逻辑问反射型XSS和存储型XSS的区别。这个不难但如果题目给的是DOM型XSS场景很多人就反应不过来。关键区分点在于反射型和存储型都涉及服务端与浏览器的交互而DOM型XSS完全在前端DOM操作中发生不经过服务端所以服务端过滤形同虚设。理解这个差异比背三个类型的定义有用得多。2.3 密码学与编码把混淆点和易错点彻底分清密码学是安全岗笔试里让人又爱又恨的部分。爱的是题目通常很“死”知道就是知道恨的是加密算法多、概念容易混淆。奇安信这套题四里的密码学题目整体难度适中重点考察三个方面对称加密与非对称加密的区别哈希算法的特性常见编码与加密的区分。对称加密与非对称加密的考点非常经典——对称加密用同一个密钥加解密速度快适合大数据量但密钥分发困难代表算法有AES、DES非对称加密有一对公私钥公钥加密私钥解密解决了密钥分发问题但速度慢代表算法有RSA、ECC。笔试里常见的一个变体是HTTPS握手过程中如何结合两者——先用非对称加密协商出一个对称密钥之后用对称加密传输数据。这个结合点要理清楚后面面试也常问。哈希算法这块有个非常容易错的知识点——MD5和SHA是哈希算法不是加密算法因为过程不可逆。题目如果问“哪个算法可以用于数据完整性校验”答案是哈希如果问“哪个算法可以加密存储密码”正确答案是加盐哈希而不是明文MD5。这里多说一句2019年前后很多题目的标准答案还是MD5加盐放在今天看已经不够安全了推荐的是bcrypt、scrypt这类慢哈希算法但笔试答案还是得看当年考纲和出题人的思路。2.4 安全运维与日志分析把攻击链还原出来日志分析是安全岗笔试中非常有区分度的题型奇安信这套题四里的日志题大部分是给一段访问日志或系统日志要求还原攻击行为。这类题考的不是“认识多少攻击工具”而是你能不能从日志的蛛丝马迹里串联出一条完整攻击链。举个例子题中给出了下面几条Web访问日志摘要GET /admin/login.php HTTP/1.1 200 GET /admin/login.php?debug1 HTTP/1.1 200 GET /admin/../../etc/passwd HTTP/1.1 403 POST /admin/upload.php HTTP/1.1 200 GET /admin/uploads/shell.php HTTP/1.1 200看起来只是几条普通请求但如果你按攻击链的思路去读就能发现问题第一条是正常访问登录页第二条带着debug1说明攻击者在探测调试功能第三条是路径穿越尝试被WAF挡了但攻击者没放弃第四条是POST上传可能上传了恶意文件第五条访问上传目录下的shell.php大概率webshell已经落地并成功连接。整套题问的“攻击者最终做了什么”答案就很清晰通过文件上传获取webshell可能已经拿下服务器控制权。这类题的解题思路我总结为“三步法”一是有没有异常请求路径穿越、注入特征二是攻击有没有成功响应码是否是200且响应内容非预期三是成功之后有没有后续动作访问上传文件、执行命令、反弹连接。只要这三步走完大部分日志分析题都能拿下。2.5 编程与算法基础安全开发的基本功虽然安全岗听起来和开发关系不大但奇安信这类安全厂商的校招笔试基本都会有一道编程题考的是代码基本功而不是算法竞赛题。常见题目类型是字符串处理、数组去重排序、简单递归、正则匹配、进制转换等。这道题往往不难但里面有几个隐藏分点。第一代码规范——变量命名清晰、逻辑分支完整阅卷人一眼能看到你在写什么。第二边界处理——比如输入字符串为空、数组长度为零、整数溢出这些情况是不是都考虑到了。第三注释——核心逻辑步骤有没有注释这直接决定阅卷人愿不愿意认真看你的代码。我见过太多人在编程题上栽跟头不是因为写不出来而是因为代码风格太随意关键词拼错、缩进混乱、没有注释。尤其注意笔试的环境往往不支持调试写错一个括号都很难发现。所以平时练习时就要刻意训练“一次写对的习惯”宁可慢一点也要保证代码整体干净。3. 解题思路遇到陌生题型怎么稳住不慌3.1 攻击类型判断题的“三步法”整套题里最考验“安全感”的是这类题给一个场景给你四个攻击类型选项让你选是哪一个。比如题干是“攻击者利用|、等字符在参数中拼接系统命令获取服务器权限”问这是什么类型的攻击。答案不是“命令注入”还能是什么但很多人会在“SQL注入”和“命令注入”之间反复横跳原因是没抓住判断的锚点。我的方法是固定的“三步法”第一步看攻击目标和注入位置——如果注入的上下文是在数据库查询语句里那就是SQL注入如果在系统命令拼接里那就是命令注入第二步看特殊字符的特征——单引号、注释符--、union一般是SQL注入的痕迹|、、;是命令注入的痕迹第三步看返回效果——报错信息带数据库语法是SQL注入直接返回命令执行结果是命令注入。三步走完基本能锁定答案。这个方法也适用于XSS注入点在HTML/JS上下文、LDAP注入注入点在LDAP查询语句等扩展场景。3.2 代码审计题从入口、过滤、危险函数三个角度切入给一段不完整的代码让你找漏洞是Web安全模块的常规操作。很多人拿到代码就从头往下一行行读效率低还容易漏。我习惯按“入口→过滤→危险函数”的顺序来审。入口就是用户输入从哪里来比如$_GET、$_POST、$_COOKIE、$_FILES这些数据都不可信。过滤就是看代码里有没有做校验比如有没有用htmlspecialchars转义、有没有用intval做整数强制转换、有没有用参数化查询。危险函数就是看代码里有没有调用一些高危函数比如PHP的eval、system、exec、include、file_put_contentsJava的Runtime.exec、ObjectInputStream.readObject等。举个例子代码里如果把用户输入直接传给了eval那无论前面做了什么过滤都极可能已经是代码执行漏洞了。如果代码里用了include引入文件且文件名前半部分是用户可控那可能存在文件包含漏洞。顺着这三个角度走十几秒就能给一段代码定个性。这套思路不止笔试用日常做代码审计也一样适用。3.3 综合分析题用攻击链思维串起零散信息奇安信这套题四里最让我觉得“值回票价”的是一道综合场景题。题干不会直接告诉你“存在什么漏洞”而是给了不少信息服务器开放了哪些端口、某接口存在文件上传功能、管理后台登录页面有弱口令、系统日志里有异常外连记录。题目问的是“根据现有信息攻击者最可能的入侵路径是什么”。这种题一旦用攻击链思维去解就会变得很简单。攻击者通常遵循“信息收集→漏洞利用→权限提升→权限维持→横向移动”的路径。所以不管题目给多少个零散信息你要做的就是把它们往这条链路上放弱口令后台是入口文件上传是拿到webshell的手段异常外连是权限维持阶段在回连C2。信息越多链路越完整答案就越确定。这类题也提醒了一件事做安全不能只盯着单一漏洞要把自己代入攻击者走一遍完整的攻击路径。日常阅读渗透测试报告、应急响应报告时不要只看漏洞列表要重点分析攻击者的完整节奏——这样面试里答“讲一个印象最深的攻击案例”时才能讲得有深度。4. 备考建议从这套题延伸开的复习路线4.1 知识体系怎么搭才不会漏很多人准备安全岗笔试时容易陷入焦虑因为知识点太多不知道怎么下手。我的建议是搭一个三层知识框架从上往下填充。第一层是基础层包括计算机网络特别是TCP/IP、HTTP/HTTPS、DNS、操作系统Linux常用命令、权限模型、进程管理、数据库SQL语法、常见函数。这一层占笔试客观题的60%以上是第一个要夯实的地基。第二层是安全专业层包括Web安全三大件SQL注入、XSS、CSRF及其变体还有文件上传、命令注入、SSRF、反序列化等常见漏洞的原理与防御密码学基础重点掌握对称与非对称的区别、哈希算法特性日志分析重点练习通过Web日志还原攻击路径。第三层是工具与实战层包括Burp Suite基本用法、nmap参数、Wireshark过滤规则、Linux日志审计技巧。这一层笔试不一定直接考但没有实战经验地硬啃前两层会很费劲。我见过很多纯粹刷笔试资料、完全不碰工具的人做分析题时思路明显僵硬——因为他们没有真实感受过攻击流量长什么样。4.2 时间分配和刷题策略如果准备周期是两个月我建议前两周全力打基础把网络协议、操作系统、数据库过一遍后面六周以“刷题补盲区”的方式循环推进。刷题时不要只做一遍对答案就完事要把每道错题变成一张知识点卡片题目考点是什么正确答案为什么对干扰项为什么错以后再遇到类似题从哪里切入。这样一张卡片的复习价值是单纯刷十道题的百倍。编程题不建议花大量时间刷算法竞赛题每天保证做一个字符串或数组相关的题目就够了重点是保持手感。但有一个坑要提醒笔试编程题的环境往往不支持代码补全和调试平时就要习惯在纯文本环境下写代码别依赖IDE的自动提示。4.3 常见问题和避坑经验整理综合我自己和学生踩过的坑整理一个高频问题速查表每个后面附解决办法。常见问题表现解决办法基础题丢分状态码、三次握手等记忆性考点出错用表格总结记忆考前过一遍混淆漏洞类型分不清SQL注入和命令注入按“注入上下文特殊字符特征”判断代码审计找不到漏洞从头到尾读代码效率低按“入口→过滤→危险函数”三步切入日志题还原不出攻击链只看出单条异常串联不起来按“信息收集→漏洞利用→持久化”分层梳理编程题AC不了思路对但实现有小bug平时练纯文本写代码注意边界测试时间不够分析题耗时太长先做分值高的题客观题控制在每题1分钟考试时如果遇到不会的题先标出来跳过不要在一道题上耗太久。安全岗笔试题量不算大但分析题阅读量大如果被一道选择题卡住后面的代码审计题和日志分析题都可能做不完这比错一道题惨多了。5. 复盘记录笔试之后我做了什么5.1 错题整理的具体方法做完这套题四我当时花了整整一个周末做了错题整理。方法不复杂用电子表格按“知识点模块、题目表述、我的错误答案、正确答案、错误原因、正确思路”六个字段录入。错误原因会分成三类——知识盲区根本不了解、概念混淆两个知识点搞混、审题失误看漏了关键条件。分类之后你会发现一个有趣的现象大多数错误其实集中在少数几个概念混淆点上知识盲区反而很少。这说明“知道得多”不是关键“区分得清”才是。比如对称非对称混淆、反射型XSS和DOM型XSS混淆、MD5是哈希不是加密——只要把每一个混淆点单独列出来用一张A4纸画一张对比表下次就不会再错。这种错题整理方式我后面用到所有科目复习里都管用。5.2 从笔试反推面试准备的重心笔试完成后还有一个重要动作——反推面试重点。因为笔试覆盖的知识范围基本就是公司认为安全从业者应知应会的范围面试大概率围绕这些点深挖。我当时从这套题里提炼出三个面试高频方向第一挑一个你熟悉的漏洞类型讲清楚原理、利用方式和防御方法第二给一个实际场景让你分析攻击行为和止损思路第三问项目经历但要说出你在项目里解决的具体问题和你自己的思考。笔试里的代码审计题、日志分析题其实就是在为这些面试问题做铺垫——面试官想知道你有没有真的理解而不只是会做题。5.3 给准备校招的同学几句实在话最后分享几个我经常跟学生们说的话算是踩过很多坑之后换来的体会。安全岗校招笔试没有那么玄乎本质上考的就是基础扎实程度和分析思路清晰度。计算机基础、网络协议、操作系统、Web安全基础这些看起来“太基础”的东西才是整张卷子的基本盘。与其花大量时间追最新的漏洞利用姿势不如把这些基础点反复夯实。尤其是网络协议部分很多人觉得这是网工的内容就跳过结果考试时在状态码、Cookie属性、DNS解析上扣了最多的分。另外一定不要只做题不思考。花半天做一套题不如花半天吃透三道错题。把“为什么错”搞清楚远比“我做过这套题”重要得多。最好每做完一套题就写一个小复盘笔记哪怕只有几百字效果都完全不同。还有一点是做安全要有防线意识——懂得怎么发现问题更要懂得怎么修复问题。笔试里经常有一道“给出加固方案”的题目很多人答不出因为只关注了怎么打、没关注怎么防。建议平时多想一想“如果这个漏洞出现在生产环境你作为安全工程师应该怎么处置”这个设问方式也能帮你在面试里言之有物。
返回列表