资讯动态

2018网易安全工程师笔试题复盘:漏洞原理与答题思路

发布时间:2026/8/29 8:49:03 来源:尧图企业网站定制
如果你准备过安全工程师的校招笔试大概都会有这种感觉笔试题目看着不深但拿分并不容易。网易2018年的这套安全工程师笔试卷正好处于Web安全、二进制安全、密码学、系统运维四块内容交叉的典型时期整套题目既不浮夸也不刻意挖坑绝大多数题都在考察“你有没有建立自己的安全知识体系”这件事。刷题时我最直观的感受是单题看着都眼熟但合在一起就是一套完整的筛人逻辑。它不是靠偏题怪题来难为你而是把安全岗日常工作里最常遇到的分析场景拆成小问题丢给你答题的过程实际上就是在模拟一个安全工程师接到任务后的思考路径。这篇文章不打算逐题搬答案而是把试卷所涉及的考点、题型逻辑、答题思路和复盘方法完整拆开希望能帮准备校招安全岗的同学少走点弯路。1. 校招笔试题里藏着的安全知识版图1.1 一套试卷的整体画像四类题型一个都不能偏2018年安全工程师校招题目和其它大厂类似题量大、覆盖面广通常在两小时内要完成近五十道选择题、若干简答题和一两道综合场景题。做题时会明显感到题目的知识范围被刻意拉得很平均Web安全、密码学、Linux系统、二进制逆向、网络协议、日志分析都会涉及。我后来复盘整套题时把这套知识版图画成了四块Web安全SQL注入、XSS、CSRF、SSRF、文件上传、命令注入、越权等占比通常达到三分之一。密码学与协议RSA、AES、哈希算法、HTTPS握手、数字签名、随机数安全属于必考区间。系统与二进制Linux权限模型、SUID、环境变量、栈溢出、格式化字符串、常见防护机制。综合分析与应急响应给一个被入侵的场景要求还原攻击链、指出问题并给修复方案。这个分布和李永乐老师讲高数似的知识点先铺开再收拢。你如果只盯着一两个方向刷题很容易在某一类题目上集体失分。我认识的一些同学Web方向很强但做到RSA计算题直接空白这就是知识版图没补齐的结果。1.2 考察主线不是“漏洞利用”而是“风险识别”有个很容易被新人误解的地方笔试卷子上考的不是“你怎么渗透进一台服务器”而是“你看到一段代码、一份流量、一个配置能不能快速定位风险点并说明白原因和加固方式”。比如Web安全题题目会给你一段拼接SQL的PHP代码让你指出漏洞和修复方案。它不要求你写出一条完整可用的SQL注入payload去拿到数据但要求你能说清楚注入点在哪里、为什么能被利用、最终可能造成什么后果。这种出题思路本质上是模拟日常代码审计和SDL安全工作。所以答题时千万别表现出“脚本小子”思维。直接报答案的人往往忽略了对漏洞根因和修复闭环的解释而这两点恰恰是评分重点。换句话讲结论给分过程更给分。2. Web安全题注入、XSS、CSRF、越权一锅端2.1 SQL注入考点要能说清漏洞根因和防御闭环Web安全里SQL注入几乎是必考题。2018年的那套题里SQL注入以选择题和简答题两种形态出现。选择题常见问法是给出几个SQL语句片段选出存在注入风险的那一条简答题则直接给代码$id $_REQUEST[id]; $sql SELECT * FROM user WHERE id . $id; $result mysql_query($sql);要求指出漏洞点、利用思路和修复方式。拿到这种题先别急着写“存在SQL注入漏洞”七个字。答题要分层根因分析用户可控参数$id被直接拼接到SQL语句中数据库把用户输入当作SQL代码执行。利用方式攻击者可通过闭合条件、联合查询、布尔盲注或时间盲注等方式获取敏感信息。笔试不需要写完整利用代码但至少要描述清楚逻辑。危害评估可能导致数据泄露、认证绕过、甚至通过数据库写文件获取服务器权限。修复方案首选参数化查询或预编译语句确保SQL语句结构不被用户输入改变同时遵循最小权限原则数据库账号不要使用DBA权限关闭错误信息回显避免报错注入泄露细节。我见过不少同学在“修复方案”这里只写一句“过滤单引号”这是典型的低分答案。过滤关键字和单引号本身既不够可靠也不是第一道防线。真正稳妥的做法是参数化查询加输入校验再配合纵深防御。2.2 XSS与CSRF不只答概念更要描述攻击链XSS相关的题校招难度一般集中在三个层面存储型、反射型、DOM型。题目可能会给一段前端代码问这段代码在什么场景下会产生XSS以及如何修复。答题时如果只写出“对用户输入做转义”是不够的。更完整的思路是输出编码根据上下文进行HTML实体编码、JavaScript编码或URL编码输入侧过滤永远不如输出侧编码稳。设置CSP通过Content-Security-Policy限制脚本来源即使XSS触发也能降低影响。HttpOnly与Secure标记防止Cookie被脚本读取保护会话凭据。DOM XSS要额外关注前端JavaScript对innerHTML、document.write、location等API的使用。CSRF这边很多同学会把它和XSS混在一起这就踩坑了。XSS利用的是用户对站点的信任CSRF利用的是站点对用户浏览器的信任。题目如果问“某接口只校验Cookie身份存在什么风险”答案是CSRF不是XSS。修复方案可以写CSRF Token校验、SameSite Cookie属性、校验Referer或Origin其中Token是主流方案。我在刷这套题时总结过一个方法把所有Web漏洞按“攻击者输入位置”“受害者凭什么信任”“攻击闭环怎么形成”三个方面去梳理。比如XSS的攻击闭环是攻击者注入脚本-浏览器执行-窃取数据CSRF的闭环是攻击者构造请求-用户浏览器自动携带Cookie-服务器误以为是用户操作。能在试卷上把这个闭环写清楚得分率会高很多。2.3 越权与逻辑漏洞笔试试卷里的加分题越权类题目在2018年已经非常高频因为这类漏洞无法完全靠扫描器发现最能体现一个安全工程师的业务理解能力。题目通常给一个简单的业务场景用户A登录系统后通过修改URL中的ID值访问用户B的订单详情。问这种问题属于什么漏洞如何修复。这个考点表面上是“水平越权”但实际考察的是你是否理解“权限校验必须发生在服务端并且要基于会话中的身份信息而非客户端参数”。修复要点包括校验当前用户是否拥有操作目标资源的权限不能只判断是否登录。不要把权限标识直接暴露在可预测的参数中必要时引入全局唯一ID或访问控制列表。关键操作要做二次校验和操作审计。处理这类题最怕的是只把答案背熟了但没想明白。比如题目改成“普通用户可以把自己的角色从member改成admin”这属于垂直越权修复方式是服务端统一的角色权限校验和接口鉴权而不是在页面上隐藏按钮。3. 密码学与协议题RSA、AES、HTTPS握手不能只看结论3.1 对称加密与非对称加密的选型逻辑密码学在安全工程师笔试里占的分量不低但难度一般不高重点考察“你知道什么场景用什么算法以及为什么”。选择题经常出现这样的问法对称加密与非对称加密的区别是什么AES属于哪一类RSA属于哪一类为什么HTTPS中同时使用两种加密方式这类题不能只背定义要理解背后的工程考量。对称加密AES加解密速度快适合加密大量业务数据但它需要一个共享密钥密钥分发就成了问题。非对称加密RSA、ECC解决了密钥分发问题但性能相对较慢一般只用来加密密钥或做签名。所以TLS的常规做法是“非对称协商密钥对称加密数据”。2018年的题目里有一个看起来很基础的问法当客户端和服务器协商出一个临时会话密钥后后续数据用什么算法加密答案就是AES等对称加密算法。这道题考察的就是你对TLS设计思路的理解而不是让你默写算法细节。3.2 RSA基础计算题一个例子吃透密钥生成过程RSA计算题是当年试卷里比较“劝退”的一类其实原理并不复杂。核心是这几步选两个不同的大素数p和q。计算n p * q。计算欧拉函数φ(n) (p-1) * (q-1)。选一个整数e满足1 e φ(n)并且gcd(e, φ(n)) 1通常取65537。求d满足e * d ≡ 1 (mod φ(n))也就是e的模逆元。公钥是(n, e)私钥是(n, d)。举个教材级的例子取p 61q 53那么n 3233φ(n) 3120。选e 17通过扩展欧几里得算法求得d 2753因为17 * 2753 46801而46801 mod 3120 1。加密时c m^e mod n解密时m c^d mod n。笔试题目一般不会让你计算特别大的数字更多是判断“给定公钥和私钥中的某几项能否推出完整的密钥对”。比如公开n和e后如果n能被因式分解任何人都能算出φ(n)并推出d这就是RSA安全性依赖大整数分解难题的原因。答题时把这个逻辑链条写出来比背几个公式更有效。3.3 HTTPS握手流程从笔试答案到面试追问密码学相关论述题里HTTPS握手流程是出镜率最高的没有之一。2018年的那道题问法是“简要描述HTTPS建立连接时客户端与服务端如何完成身份认证和密钥协商”。完整的答题套路应该是客户端发起ClientHello携带支持的TLS版本、加密套件列表和随机数。服务端回应ServerHello选择加密套件携带自己的证书和另一个随机数。客户端验证证书链是否可信确认服务端身份。双方通过密钥交换算法如ECDHE或RSA协商出预主密钥。计算出会话密钥后客户端发送Finished消息服务端也发送Finished消息握手完成。后续通信使用会话密钥进行对称加密。答题时最好提一句“前向保密”因为面试官很喜欢顺着这个词往下问。ECDHE这种临时密钥协商方式即使服务器私钥泄露历史流量也无法被解密因为它每次握手都会生成临时密钥对。而传统的RSA密钥交换没有这个性质所以现在主流都在推ECDHE。我刷题时有个体会光把握手流程背下来是低分答案你必须在脑子里把这个过程变成“谁验证谁、谁生成什么、密钥从哪里来、泄露了会怎样”四个问题答出来才会有层次感。4. 系统与二进制安全题Linux、栈溢出、权限模型4.1 Linux权限与提权知识怎么考才不坑系统安全题在笔试卷里通常以场景形式出现。比如服务器上某个文件只有root能修改普通用户却可以执行它问可能存在什么风险。SUID位是什么为什么SUID程序容易成为提权目标拿到一个WebShell后攻击者一般会通过什么方式提升权限这三个问题背后其实是一条攻击链攻击者先通过Web漏洞打入服务器拿到低权限账户然后寻找配置不当的SUID程序、脏牛等内核漏洞或弱口令的root进程实现提权。笔试答题时建议把Linux的权限模型讲透读、写、执行权限之外还有SUID、SGID和Sticky Bit。SUID程序以文件所有者的权限运行一旦某个可写文件被设置了SUID普通用户执行它时就会获得属主权限如果属主是root风险极大。典型检查命令是find / -perm -4000用来排查系统里所有SUID文件。修复思路同样重要移除不需要的SUID/SGID位通过最小权限原则配置sudo策略定期审计/etc/passwd、/etc/shadow的权限和账号状态。4.2 栈溢出与格式化字符串理解底层内存结构二进制方向是当年网易笔试卷里区分度最大的一块。如果Web题考的是知识面二进制题考的就是是否真的动手调试过。栈溢出题通常会给一段有问题的C代码#include string.h void vuln(char *arg) { char buf[64]; strcpy(buf, arg); } int main(int argc, char *argv[]) { vuln(argv[1]); return 0; }题目问这个程序存在什么漏洞攻击者可能通过什么方式利用现代系统上有哪些缓解机制。答题框架strcpy不会检查缓冲区边界导致溢出的数据覆盖栈上相邻变量、EBP甚至返回地址。早期利用方式是覆盖返回地址使程序跳转到攻击者指定的shellcode。现代防护机制包括栈Canary、NX数据执行保护和ASLR地址空间布局随机化。Canary会在函数序言中写入一个随机值函数返回前检查该值是否被篡改NX禁止栈上代码执行ASLR让栈、堆、库地址随机化使固定地址的跳转失效。因此现代利用通常需要信息泄露配合ROP等方式难度大幅提高。答题的时候不需要写出真正的ROP链但至少要把“覆盖返回地址”这个核心逻辑说清楚同时说明Canary为什么有效。面试考官真正关心的是你有没有建立“数据与指令在同一块内存里数据越界时可能改写指令流”的直觉。格式化字符串漏洞也是高频考点题目会给printf(user_input)这样的代码问有什么问题。答案是用户输入被当作格式化字符串通过%s、%x可以泄露栈内存通过%n可以往任意地址写数据因此可以造成信息泄露和控制流劫持。修复方式是把printf(%s, var)写清楚永远不要直接把用户输入作为格式化字符串。4.3 安全防御机制出题背后的意图二进制题后往往会跟着防御类选择题比如问ASLR、DEP、PIE、RELRO分别是什么哪一项默认开启哪一项会导致编译器报错。个人经验是不要把这些缩写当独立名词背而是理解为“系统给攻击者增加的成本”。ASLR让地址随机化DEP让攻击者不能轻易执行栈上的代码PIE让程序本身地址也随机化RELRO则保护GOT表不被改写。安全岗的工作很多时候不是在“防守绝对不被攻破”而是“提高攻击成本让攻击者知难而退”。这套思路同样适合解答“如何加固服务器”类的开放题系统层面要做最小权限和补丁管理应用层面要做输入校验和权限校验数据层面要做加密和脱敏网络层面要用最小暴露原则。5. 综合场景题应急响应思路比标准答案重要5.1 拿下一个“被入侵”场景从哪几条线索入手综合场景题通常不会给标准答案而是给一段描述某业务服务器异常CPU占用高外连大量未知IP/tmp目录下有陌生二进制文件业务日志出现异常访问。要求描述排查思路和修复措施。这类题考察的是你对应急响应流程的熟悉程度。我的答题顺序是这样先断网或隔离防止攻击者继续外传数据同时防止后续破坏活动影响取证。尽量保留现场在关闭进程或删除文件前先对内存和磁盘做镜像至少把关键进程的命令行、网络连接、登录记录留下来。按时间线梳理检查登录记录、Web访问日志、系统日志找到首次入侵时间点。找后门排查陌生进程、自启动项、定时任务、SSH公钥是否被篡改。分析恶意样本判断外连目的、样本类型然后做清除和加固。修复所有暴露面加强口令强度、修复漏洞、收敛公网开放端口。答题时最忌讳的是上来就“杀进程、删文件”。一旦把现场破坏攻击链就没办法还原了。安全的思路应该是“先保全证据再清除威胁”。5.2 日志分析与流量分析的基本套路综合题里偶尔会附带日志片段或流量摘要。比如给你一段Apache访问日志要求找出扫描行为。这时候你需要快速定位异常规律短时间内大量不同IP、大量404或500状态码、特殊的User-Agent、反复请求同一路径这些都有可能是扫描器特征。流量分析题通常会要求用Wireshark或tcpdump看主要交互。答题时至少要掌握几个关键点TCP三次握手特征大量SYN包但没有后续ACK可能是SYN扫描。DNS查询异常大量随机子域名可能是DGA木马行为。端口外联异常内部服务器主动连接未知端口要考虑回连后门。HTTP请求中带有base64编码或特殊字段可能是命令控制流量。如果笔试给出了PCAP摘要别急着背工具参数关键是讲清楚你怎么从“现象”推到“结论”。比如看到大量发往同一目的IP的小包下一步就是查这个IP背后的威胁情报再定位是哪个进程发起的。5.3 答题表达决定了你能不能进下一轮综合场景题的评分往往取决于答题的表达方式。同样的知识点有人回答“打下来了再看日志”有人回答“先封IP再排查”还有人回答“隔离-取证-分析-清除-加固”五步走这之间差距很大。我个人的建议是答题时用结构化表达把“操作动作”和“为什么这么做”分开写。例子第一步隔离受感染主机保留内存镜像和完整磁盘数据。原因防止攻击者清理证据同时避免横向扩散至内网其它机器。第二步排查进程网络连接关注外连IP和异常进程。原因优先确认攻击者是否仍在线避免边排查边被持续控制。这种写法能让阅卷人一眼看出你的思路是有逻辑的。单纯堆砌命令和工具的答案反而容易失分。6. 复盘建议把一套笔试题变成面试准备地图6.1 时间分配与答卷顺序的经验笔试时间看着很长真正写起来非常紧张。我建议拿到卷子后先花三分钟把所有题目扫一遍分出“秒答区”“需思考区”和“碰运气区”。先把拿得准的题做掉再把时间留给论述题和综合题。我的做题顺序是选择题-简答题-综合题。选择题虽然是按点给分但性价比没有想象中高综合题虽然难但只要你写了就有分。2018年那种题型配置下我见过不少同学在选择题上纠缠二十分钟结果最后一道综合题只写了两行这非常可惜。6.2 高频考点之外的隐性要求从这套笔试题往回看最高频的考点其实没有超出OWASP Top 10和常用的系统安全知识。但有一个隐性要求容易被忽略它不会直接考“CTF题”但会考“你能否把CTF里学到的方法转化为工程语言”。比如CTF里你可能会构造一个精心设计的payload打通端口而笔试里更有可能问你“这个payload为什么能绕过防护”以及“你建议安全团队怎么修复”。所以准备笔试的时候不要只刷攻击题也要同步看安全编码规范和漏洞报告模板练着把技术问题写成给开发人员看的安全建议。6.3 我自己的笔试复盘笔记习惯最后分享一个我自己的小习惯每次刷完一套真题或模拟题除了对答案我会把每道错题拆成“知识点-触发场景-修复方案”三栏写进笔记。平时碎片时间就翻一翻面试前只看笔记的错题部分效率比重新刷一遍卷子高很多。做多了之后你会发现安全岗笔试最核心的不是所谓的“题库”而是你是否养成了看到任意一段代码、一个系统配置、一份流量日志都能自动带出风险点、攻击路径和修复方案的思维习惯。这种习惯才是这套笔试卷真正想筛选出来的东西。希望这份拆解能对你准备安全工程师校招有些帮助。题目会变考察方式会变但底层那些“为什么”永远值得你多想一想。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价