ARTICLE DETAIL

资讯详情

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

安全工程师笔试核心考点解析:从Web攻击到密码学原理的综合备考指南

安全工程师笔试核心考点解析:从Web攻击到密码学原理的综合备考指南 1. 整体设计与考察思路1.1 网易安全工程师笔试到底在考什么先说结论网易2020校招安全工程师提前批这套笔试题整体风格偏基础但覆盖面极广和很多大厂的安全岗笔试类似它不追求让你写出多么惊艳的Payload而是考察你对安全知识体系的完整度、对核心原理的理解深度以及有没有真正的实操经历。我当时拿到这套题的第一感受是题目量不小但真正难的不是某一道题而是知识面的广度。安全这个方向太杂了Web、二进制、密码学、网络协议、系统安全、编程能力哪个方向都有可能出题。如果你只深耕某一个方向比如只做Web渗透碰到逆向和密码学的题目就会比较吃亏。网易的笔试通常分为几个大块基础知识题网络、操作系统、数据库、安全专业题Web安全、密码学、二进制、编程题。从校招提前批的定位来看题目不会刻意刁难你但要求你对安全领域的核心概念有一个扎实的掌握而不是停留在“听说过”的层面。比如SQL注入不仅要知道是什么还要能说清楚原理、利用方式和防御方案RSA不仅要会算还得理解公私钥体系是怎么运作的。1.2 提前批和正式批的区别提前批的定位就是提前锁定优秀人才题目难度不会比正式批低但侧重点有些不同。提前批更看重基础功底和学习潜力因为这个时候大部分候选人还没开始系统刷题面试官心里也清楚。所以如果你在提前批就能把基础题答得扎实代码题写出优雅的解法反而比追求偏题怪题更容易脱颖而出。我个人的理解是提前批笔试其实是“筛选”而非“刁难”。它要筛掉的是那些基础不牢、对安全只是“感兴趣”但没有系统学习的候选人。到了正式批因为候选人的准备程度普遍更高题目才会往深了走甚至加入一些接近CTF难度的题目。所以如果你准备投递这类提前批岗位策略应该是把基础知识夯实把常见漏洞类型摸透把算法题保持手感再用一些标志性的项目或CTF经历证明你“真的做过”。这套组合拳在提前批的通过率会非常可观。2. 核心知识点拆解与实战分析2.1 Web安全老生常谈但永远逃不掉Web安全是安全工程师笔试的必考内容几乎没有例外。网易这套题的Web方向主要覆盖了OWASP Top 10里的几个关键项SQL注入、XSS、CSRF、SSRF、文件上传、命令注入以及反序列化漏洞。先说SQL注入。这一块考的不只是“单引号报错”这种入门操作而是考察你对注入产生根源的理解。我自己复习时的思路是注入的本质是“数据和代码没有分离”程序把用户输入的数据当成了SQL语句的一部分来执行。理解了这个本质你就能解释为什么参数化查询能防注入——因为参数化查询把数据和SQL结构强制隔离了输入再离谱也只是数据永远不会变成可执行的结构。网易的题目里可能有这样一类给一段存在注入风险的代码让你指出问题并写出修复方案。这种题其实比给你一个注入点让你打进去更能检验真实水平因为修复方案需要你理解框架层面的防御机制而不只是会拼接Payload。我当时答这类题时会分三层写最底层用参数化查询或PreparedStatement中间层对输入做白名单校验外层加WAF兜底。这种递进式的防御方案会让阅卷人觉得你不是只会背题而是确实考虑过生产环境的防御架构。再说XSS。XSS的三种类型——反射型、存储型、DOM型是笔试的常客。反射型XSS是一次性的通常需要诱导受害者点击构造好的URL存储型XSS是持久化的攻击者把恶意脚本存到服务器上所有访问该页面的用户都会中招危害最大DOM型XSS则纯粹在前端发生payload不会经过服务器因此服务端WAF很难防御。笔试中如果考到XSS的防御答案基本就是三板斧输入过滤、输出编码、CSP内容安全策略。其中最重要的是输出编码因为XSS的根源是用户输入被渲染成了HTML/JavaScript在输出端做上下文字符编码比如HTML实体编码、JavaScript十六进制编码是最有效的阻断方式。HttpOnly标志也要提它能防止JavaScript读取Cookie即使XSS打成功攻击者也无法通过document.cookie窃取会话。CSRF这块建议从“借刀杀人”这个角度去理解攻击者借受害者的浏览器以受害者的身份发起恶意请求。关键点在于CSRF利用的是Cookie自动携带的机制受害者的浏览器会在请求时自动带上会话凭证。防御方案通常是校验Referer、使用CSRF Token、给敏感操作加二次验证。值得强调的是CSRF Token必须绑定会话且足够随机如果Token是固定值或者可以从页面中预测出来的这个防御就形同虚设。2.2 二进制安全与逆向拉开差距的地方如果说Web安全是安全工程师的“基本功”那二进制安全就是很多人的“舒适区边界”。网易这套题里涉及了栈溢出、格式化字符串、各类防护机制以及基础的逆向分析整体难度属于国内校招的正常水平但如果你没有系统接触过这个方向这些题会直接变成你的丢分重灾区。栈溢出这块笔试不会让你真的写exp但会让你理解调用栈的结构函数调用时参数、返回地址、EBP或RBP、局部变量依次压栈如果局部变量缓冲区发生越界写入就可能覆盖到返回地址从而劫持程序控制流。理解了这张栈帧布局图很多题目就迎刃而解了。防护机制的题目是高频考点NX栈不可执行、ASLR地址随机化、PIE程序本身的地址随机化、Canary栈保护值。这些机制为什么要存在各自防的是哪种攻击只有理解它们的对抗关系你才能想明白为什么现代漏洞利用越来越复杂。比如NX阻止你在栈上执行shellcode那攻击者就改用ROP面向返回编程来复用程序已有的代码片段ASLR导致地址随机攻击者就通过信息泄露找到实际地址。这种攻防对抗的演进逻辑比死记硬背某个知识点重要得多。逆向分析这块网易之前考过基础的逻辑题和简单的加密算法识别。建议至少掌握常见加密算法在二进制中的特征比如AES的S盒、常量0x63、异或加密的特征、Base64的索引表。很多时候不需要你完整逆向一个程序只要你能识别出核心算法就能推出题目要你找的Flag结构。推荐在日常学习中用IDA和Ghidra练手至少要看懂伪代码能定位关键函数。2.3 密码学理解思想比死记公式重要密码学在安全岗笔试中出现频率很高网易这类大厂也不例外。我见过很多人在这一块只会背“AES是对称加密、RSA是非对称加密”但一细问就露馅了。所以这里我建议从“密码学要解决什么问题”入手去理解。对称加密解决的是“加密解密速度”的问题AES、DES、3DES、IDEA都属于这一族。AES是目前的事实标准使用固定128位分组密钥长度支持128/192/256位笔试常考的是它的分组模式和填充方式CBC模式需要初始向量IVECB模式不能隐藏数据模式所以安全性差GCM模式自带认证功能适合现代通信。DES因为56位密钥太短已被暴力破解攻破3DES虽然后续者但是效率太低面试问到这些的时候能说出“为什么退出历史舞台”会非常加分。非对称加密解决的是“密钥分发”的问题RSA、ECC、ElGamal属于这一族。RSA的安全性基于大整数分解的困难性ECC基于椭圆曲线离散对数问题。笔试里常考的RSA计算题一般是已知p、q、e求d。这里必须熟练使用扩展欧几里得算法求模逆元。我的经验是这类题要在平时多练几道找手感不然考场上算起来很慌还容易算错。哈希算法也是高频考点MD5、SHA-1、SHA-256、SM3。哈希的核心性质有三个抗原像性不能从哈希值反推原文、抗第二原像性给定一个原文不能找到另一个原文哈希值相同、抗碰撞性不能找到任意两个原文哈希值相同。理解了这三条性质你就能解释为什么MD5和SHA-1“已不再安全”——不是哈希值算不出来而是存在可行的碰撞攻击方法。数字签名和证书体系可能会考HTTPS的握手过程。要能说清楚客户端如何验证服务器证书的合法性证书链、CA公钥、会话密钥如何协商RSA密钥交换或ECDHE临时密钥交换、之后如何用对称密钥加密通信。把HTTPS的握手流程完整复述一遍是笔试中非常容易拿分的基础题。2.4 网络与系统安全底层基础必须过硬网络知识是安全工程师的基本功TCP/IP协议栈、HTTP协议、DNS、端口与服务的对应关系这些不是安全专属但是安全分析的基础。网易校招笔试中这类题目占比不小而且往往藏在一些场景题里。TCP三次握手和四次挥手几乎是必考。要能画出状态迁移图SYN_SENT、ESTABLISHED、FIN_WAIT、TIME_WAIT这些状态都要门儿清。和安全的关联点在于SYN Flood攻击就是利用三次握手过程中服务端要为半连接分配资源的机制发送大量伪造源IP的SYN包把服务端的半连接队列打满导致正常用户无法建连。这类攻击题目不会直接问你“什么是SYN Flood”而是让你分析某个网络异常现象的原因这时候你对协议的理解程度就体现出来了。HTTP协议方向重点关注请求方法、状态码、请求头与安全相关的字段。X-Forwarded-For用来获取真实IP但可以被伪造这就和安全认证逻辑相关Host头可以伪造也就催生了Host头注入攻击。Cookie的安全属性——Secure、HttpOnly、SameSite——每个都是考点尤其是SameSite属性对CSRF的防御作用。端口和服务的关系是送分题但送分不代表可以不准备21是FTP、22是SSH、23是Telnet、25是SMTP、53是DNS、80是HTTP、443是HTTPS、3306是MySQL、6379是Redis、27017是MongoDB。这些常见的端口要形成条件反射看到端口就知道对应服务才能快速判断可能存在的攻击面。系统安全方面Linux的权限模型是重点文件权限的rwx含义、SUID/SGID的权限提升风险、sudo机制、用户和用户组管理。Windows安全则会考到常见的认证协议NTLM、Kerberos的基本概念以及注册表、服务权限、ACL这些基础内容。系统安全有个特点单看知识点都不难但组合起来就需要你具备“站在攻击者视角找攻击面”的能力这和真实的渗透测试思路是一样的。3. 实操过程与解题思路解析3.1 拿到笔试题后我先做了什么时间管理在笔试中非常重要。我的策略是拿到卷子后的前3分钟不着急动笔先把所有题目快速扫一遍给题目分成三类——能秒答的、需要思考的、完全没思路的。这样做的目的不是让你跳题而是帮你建立全局认知合理分配时间。网易的题量通常是选择题约20道、简答题约3到4道、编程题2道左右总时间在90到120分钟。选择题建议每题控制在1到2分钟简答题控制在10到15分钟编程题留足40分钟以上。如果你在某道选择题上卡了超过5分钟果断先标记跳过完成后续题目后再回来处理。3.2 典型题目的完整解题过程我拿一道印象比较深的笔试题来复盘。题目大致是给出一段存在SQL注入的Java代码要求说明漏洞成因、利用方式和修复方案。这类题我的答题框架是“成因—利用—修复”三段式成因分析代码中直接将用户输入的参数拼接进SQL语句字符串未经过任何过滤或参数化处理。当输入为 1 OR 11 时拼接后的SQL变成了 SELECT * FROM users WHERE id1 OR 11WHERE条件恒真导致查询返回全部数据。利用方式说明攻击者可以通过布尔盲注构造恒真/恒假条件观察页面差异、联合查询注入UNION SELECT、时间盲注等手法逐步猜解数据库表名、字段名和数据内容。这类描述要说明“为什么能利用”而不是只堆积工具名字。修复方案首要措施是改用PreparedStatement参数化查询并补充说明需在配置层面限制数据库账号权限其次在应用入口层做输入白名单校验最后在部署层面配置WAF作为兜底。写修复方案时最好按照“首选方案”“补充措施”“兜底手段”的层级来显示出你具备完整的纵深防御思维。编程题方面我当时遇到的一道是“求字符串中最长不重复子串长度”的变体。这类经典问题用滑动窗口解决核心思路是维护一个窗口用哈希表记录窗口内字符的出现情况当出现重复字符时收缩左边界。时间复杂度O(n)空间复杂度O(字符集大小)。平时多刷剑指Offer和LeetCode热题100这类算法题基本不会失手。3.3 简答题怎么答才加分简答题最容易暴露一个人的知识深度。同样是回答“什么是SSRF”基础答案是“服务器端请求伪造攻击者可以构造请求让服务器发起网络请求”。这个答案不扣分但也不加分。高分答案会这样答先讲清SSRF的成因——服务器端在处理URL参数时没有做严格的域名白名单和内网地址校验导致攻击者可以让服务器对任意地址发起请求。再讲利用场景攻击者可以利用SSRF探测内网端口、访问云服务器的元数据服务比如获取临时凭证、攻击内网其他服务。最后讲防御解析URL后校验IP是否为内网地址、DNS Rebinding防护、限制请求协议只允许HTTP/HTTPS、禁止302跟随到内网、设置出方向网络ACL。看到区别了吗基础答案是“what”高分答案是“what how why how to fix”。阅卷人可以从你的答案里判断你是“背过”还是“真懂”。在校招笔试中“真懂”的人占比不高你只要按这个思路答题每道简答题都能拉开一点差距。4. 常见问题与避坑指南4.1 备考阶段最容易踩的坑第一个坑只刷CTF不刷基础题。CTF能锻炼思维但很多CTF偏题、怪题在笔试中根本不出现。笔试考的是知识体系你可以花时间去搞一道复杂的堆利用题但面试官可能更看重你能不能把TCP四次挥手的状态变化说清楚。备考精力分配上我建议基础占六成、CTF练习占四成。第二个坑只看不练。尤其是密码学和二进制光看exp和writeup没有任何用必须亲手算一遍、调一遍。RSA的模逆元运算、AES的CBC模式加密过程、栈溢出的偏移计算只有在纸上或电脑上实操过一遍你在考场上才不至于生疏。我见过太多人说“我懂的就是算不出来”其实就是平时不动手造成的。第三个坑编程题完全放弃。安全工程师要写代码这是一道硬门槛。如果两道编程题都空着你前面的选择题再高也很难进面试。至少把剑指Offer的基础题刷完能熟练写出来字符串处理、动态规划基础题、二叉树遍历这些常规算法题保证编程题不会拖后腿。4.2 笔试答题中的实用技巧选择题中有“选出下列说法错误的一项”这类题很多人会逐项分析然后凭感觉选。我建议反过来先看选项里有没有“绝对化表述”——“一定”“必然”“所有”这些词安全领域几乎没有绝对的结论出现绝对化说法的选项大概率是错误项。当然不绝对但至少值得优先怀疑。简答题一定要分点作答。同样一段内容不分点是一坨文字分点就是结构化表达。阅卷时间有限分点作答能帮阅卷人快速抓到你的答题要点。建议用“一、二、三”或“1. 2. 3.”这样的编号重要结论放最前面。编程题一定注意输入输出的处理方式和边界条件。很多算法题本身不难但一个隐藏的边界条件没处理就会导致几个用例不通过。提交前花30秒检查一下输入为空、超长字符串、负数这些边界情况能多救回来不少分。4.3 笔试之后如何准备面试笔试考完不是万事大吉网易这类公司笔试和面试间隔很短要趁热打铁准备面试。面试里会问你简历上的项目这是最能体现能力的地方。如果简历上只写了“参与XX平台的渗透测试”面试官追问“具体做了什么”“发现了什么漏洞”“如何证明该漏洞可被利用”“如何修复”你答不上来面试结果不会太好。建议把简历上每个项目的背景、过程、结果、思考都提前写好稿子尤其是漏洞挖掘项目要把“发现漏洞—验证利用—给出修复方案”的完整闭环讲清楚。安全这个行业特别看重“闭环能力”只发现问题不解决问题在用人单位眼里价值会大打折扣。另外面试中大概率会有现场分析题可能是白盒代码审计、流量分析或者日志分析。这类题往往是考察你排错和定位问题的思路建议大声把思考过程说出来让面试官看到你的分析路径。安全工程师的核心能力不是“会用什么工具”而是“如何分析问题、如何决策”。我在实际准备和参加这类校招笔试的过程中最深的体会是安全工程师的知识体系就像一个木桶短板决定了你在笔试中的上限。Web安全强但密码学弱密码学补上但网络基础不行每块短板都是考场上的一张失分牌。平时学习不妨圈定几个方向深度投入但基础知识一定要全面覆盖。最后再分享一个很小的技巧考前把前面提到的各类端口、常见漏洞类型、加密算法对照表打印出来或者写在一张A4纸上考前一晚快速过一遍。这些知识是纯记忆性内容考前突击性价比极高。真正考验理解能力的题目靠的是平时的积累而这种送分题一定要稳拿不丢。
返回列表