ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

奇安信Web安全工程师笔试复盘:从漏洞挖掘到渗透测试实战

2026/8/29 19:29:29 拓冰建站 浏览量
奇安信Web安全工程师笔试复盘:从漏洞挖掘到渗透测试实战 如果你正在准备安全厂商的Web安全工程师岗位尤其是奇安信这类以攻防实战见长的公司那么5月31日这场笔试应该是个很典型的参照样本。我当时做完这套题复盘了整整两周最大的感受是它不考你背了多少CVE编号也不考你刷了多少道CTF题的答案而是考你“有没有真的动手挖过洞、看过日志、修过漏洞”。这篇就把当时笔试的考点构成、背后的岗位能力要求、以及每一类题应该怎么答完整拆一遍。内容既覆盖2020年这批题的核心方向也适用于现在准备Web安全笔面试的通用场景适合应届生、想转岗做安全的开发、以及想进安全厂商做红队或渗透测试方向的人参考。1. 奇安信Web安全工程师笔试到底在考什么1.1 笔试的整体结构与考察逻辑2020年这场笔试整体题量不算小大概在两个小时内完成了选择题、判断题、简答题和综合分析题四种题型。选择题和判断题覆盖Web安全基础、网络协议、操作系统、数据库常识这部分其实是在筛“基础扎不扎实”简答题和综合分析题才是真正拉开差距的地方它会给你一个场景或者一段代码让你分析漏洞成因、写出利用思路、再给出修复方案。我印象比较深的一道题是给了一段PHP代码里面有一个文件上传的逻辑让你指出它存在哪些安全问题。这种题不要求你当场弹出一个shell但你必须能准确说出文件名没有做白名单校验、MIME类型可以伪造、上传目录没有执行权限隔离、没有对图片内容做二次校验。能把这几层说全说明你确实处理过文件上传漏洞而不只是背过“不能相信用户输入”这句话。所以这套笔试的考察逻辑很明确基础知识用来筛人场景题用来挑人。基础题大家都能答但场景题如果平时没有真正调试过漏洞很难写出有深度的答案。1.2 从岗位JD反推开考点的设计意图现在我们回头看看奇安信Web安全工程师这个岗位在做什么。奇安信的产品线里和Web安全直接相关的主要有WAFWeb应用防火墙、渗透测试服务、红队评估、代码安全审计也就是热词里提到的奇安信代码卫士那类工具、以及安全运营中心的Web攻击监测。这些业务决定了工程师必须具备四个核心能力漏洞挖掘能力、攻击链分析能力、代码审计能力、安全防护策略设计能力。所以笔试考点看似分散其实都是围绕这四个能力展开的。比如考HTTP协议和同源策略是因为你后面要看WAF日志、分析攻击流量考SQL注入和XSS的绕过手法是因为红队评估和渗透测试必须用得到考代码审计思路是因为奇安信的代码卫士工具需要工程师能看懂扫描结果并给出修复建议考应急响应和日志分析是因为安全运营岗位需要从海量告警里找出真正的攻击。想明白这一点你就知道复习方向应该是什么了——不是漫无目的地刷题而是把自己代入“一个正在做渗透测试或者应急响应的人”去思考每一道题在真实工作中对应哪个环节。这也是为什么我建议所有准备这类笔试的人先把岗位JD里的每个关键词列出来再逐一映射到知识点上。2. 核心考点破拆从OWASP到真实攻击链路2.1 Web基础与协议层考点笔试里Web基础占了不小比例尤其是HTTP协议的细节。别觉得这些简单真到了细节题上挂的人不少。比如它问Cookie的HttpOnly属性作用是什么SameSite属性解决了什么问题Referer头能不能作为CSRF防御的唯一手段这些题如果平时只是用浏览器F12看过几个请求很容易栽。我的建议是把HTTP请求报文和响应报文的每个字段都过一遍搞清楚Host、User-Agent、Referer、X-Forwarded-For、Content-Type这些头在安全场景下怎么被利用。比如X-Forwarded-For可以被客户端伪造这道题在笔试里几乎必考因为很多开发者用这个头来做客户端IP限制结果被绕过。另外同源策略是Web安全的地基。我复习CORS跨域资源共享的时候发现很多人分不清“同源”和“同站”的区别导致做题时判断错误。其实同源要求协议、域名、端口三者完全一致而同站只需要注册域一致即可。CORS配置成Access-Control-Allow-Origin: *时如果接口涉及敏感数据配合Authorization头使用就会出大问题。笔试里还有一种考法就是给你一段Nginx或者Apache的配置片段让你找出其中的安全问题。比如配置了autoindex on导致目录列表暴露或者把.git目录直接暴露在Web根目录下。这种题本质上是考你在真实部署中见没见过这些配置文件。2.2 注入类漏洞从原理到绕过SQL注入是Web安全笔试的绝对重点几乎是必考。我不打算把每个注入类型都列一遍那样反而没有重点。我复盘下来发现笔试出题人喜欢考三种数字型注入的判断、联合查询注入的字段数判断、时间盲注的构造方法。举个例子它给你一个URLhttps://target.com/news.php?id1问你如何判断是否存在数字型注入。标准思路是先输入id1和id2观察页面差异再输入id1观察报错再输入id1 and 11和id1 and 12对比页面。这个过程看起来简单但很多人会忽略一点输入id1时如果PHP做了错误处理不显示详细报错你得通过布尔条件来判断而不是等着看数据库报错。闭合方式也是高频考点。单引号闭合、双引号闭合、不加引号的情况、以及像($id)这种带括号的写法在笔试简答题里都出现过。我当时总结了一个判断思路先把参数值放到引号里看能不能通过加一个引号让SQL语句报错能报错就说明存在闭合点然后再根据报错信息确定闭合方式是单引号、双引号还是其他组合。参数化查询是修复SQL注入的标准答案但要答出深度你得补充说明为什么预编译可以防止注入因为预编译把SQL语句结构固化用户输入只能作为参数值传入无法改变SQL语句的结构。如果你只是写一句“使用预编译”拿不到满分你得把“结构不可变”这个关键点说出来。时间盲注这块笔试很少让你完整构造payload更多是让你分析流量包或者日志里的请求特征。我当时做了一道题给了几行MySQL慢查询日志里面有SLEEP(5)的痕迹让你判断这是什么攻击。这其实就是考察你有没有真实分析过SQL注入带来的数据库延迟特征。2.3 XSS、CSRF、SSRF与逻辑漏洞XSS是笔试里的送分题但也最容易丢分。因为它会问得很细反射型、存储型、DOM型三者的区别是什么DOM型XSS和反射型XSS的本质区别很多人答不上来。关键差异在于反射型和存储型XSS是服务端把不可信数据拼接到HTML中而DOM型XSS是前端JavaScript代码里用了innerHTML、document.write这类危险函数把不可信数据写入了DOM整个过程服务端并不参与。笔试还会考察XSS的利用思路比如窃取Cookie、钓鱼、键盘记录。这时候你得顺带答出HttpOnly的作用设置了HttpOnly的Cookie无法被JavaScript读取所以即使有XSS也拿不到用户Cookie只能考虑结合其他漏洞或者进行钓鱼攻击。CSRF的考点集中在防御方式上。Token、SameSite、二次验证三件套你得能解释为什么Token有效因为Token是随机的、绑定用户会话的攻击者无法预测所以构造不出有效的跨站请求。但要注意如果目标站点本身存在XSS攻击者可以通过XSS读取Token这时候CSRF防御就等于失效了。这道题在笔试里属于拔高题能把“XSS破坏CSRF防御”的逻辑说清楚很加分。SSRF是近几年的大热门2020年奇安信笔试也考了。它通常不会直接告诉你是SSRF而是给你一个“URL图片抓取”功能让你分析存在什么漏洞。核心判断点是如果服务端接收到用户传入的URL然后由服务器去请求这个URL就有可能存在SSRF。危害在于可以访问内网资源比如http://169.254.169.254这类云元数据地址。修复思路是解析URL、校验IP是否为内网地址、限制协议为HTTP/HTTPS、禁止重定向。这里要提醒一点只是简单过滤127.0.0.1和localhost很容易被绕过比如用127.0.0.1的十六进制形式0x7f000001、短域名localtest.me、以及DNS重绑定都能绕过黑名单校验。逻辑漏洞是笔试里比较灵活的部分常见有越权、支付逻辑、验证码绕过、密码重置漏洞。这类题不考技术深度考思维缜密程度。比如给你一个修改密码的接口参数包括username、oldpassword、newpassword问你有什么问题。答案是接口没有判断当前会话用户是否等于传入的username导致可以修改任意用户密码。这种漏洞在真实渗透测试里特别常见笔试考它就是要看你在测试的时候有没有这种“改个参数试试”的思维习惯。2.4 文件上传、文件包含与解析漏洞文件上传是笔试的常青树内容也很多。我复盘下来反复出现的考点有五个前端JS校验能否绕过——抓包改请求即可前端校验只是用户体验不是安全控制。MIME类型校验能否绕过——Content-Type在Burp Suite里直接改。扩展名黑名单/白名单——黑名单可被php3、phtml、php5这些变体绕过白名单相对安全但要看是否检查了大小写和末尾空格。文件内容校验——图片马利用的是文件头伪造GIF89a加上一句话木马如果程序只检查文件头就能绕过。上传目录的执行权限——修复方式是把上传目录和脚本执行目录分离或者关闭解析权限。文件包含在笔试里一般考PHP的include和require函数。逻辑是如果参数里带了文件名且没有严格校验就可能包含本地文件或者远程文件。本地文件包含可以读取/etc/passwd、包含日志文件getshell远程文件包含则直接执行恶意代码。修复思路是白名单限定包含范围禁止动态包含。解析漏洞这里是送分知识点Nginx 0x00截断、IIS 6.0分号截断这些经典漏洞要能说清楚原理。到现在来看这些老漏洞在实际环境中已经很少见了但笔试考它们是考察你有没有深入理解Web服务器和脚本解析器的交互方式——比如Nginx误将1.jpg交给PHP解析、Apache多后缀解析的优先级规则这些对于一个Web安全工程师来说是必须掌握的底层知识。3. 从笔试到实战渗透测试流程与代码审计思路3.1 渗透测试标准流程与报告输出笔试的综合分析题里有一类题特别像“面向岗位的模拟任务”。比如它给你一个授权渗透测试的目标站点和一份模板让你写出完整的渗透测试流程。这类题分值最高也是最需要提前准备的。完整的渗透测试流程至少包含七个环节授权确认、信息收集、漏洞探测、漏洞利用、后渗透、痕迹清理、报告输出。笔试答案里可以精简成五步但要把握住每个环节的核心动作。比如信息收集要包括子域名、端口、指纹、目录、JS文件等多个维度其中JS文件里的API接口和密钥泄露是近几年的高频突破口。报告输出是奇安信这类安全服务公司非常看重的能力因为报告是交付物客户就是通过报告来评估你的工作成果。一份合格的渗透测试报告至少要包含漏洞名称、危害等级、影响的资产URL、漏洞详细描述、复现步骤含请求包和响应包、修复建议。我在笔试时把报告结构按这个模板写阅卷人一看就知道你写过真实报告。补充一句热词里提到的“web安全渗透测试报告”如果大家想参考可以在学习时主动收集一些公开的报告模板学习它们的漏洞描述方式和修复建议措辞对笔试和以后的正式工作都有帮助。3.2 工具链与实战技巧笔试虽然不会让你现场操作Burp Suite但它会问你“你在渗透测试中用了哪些工具分别解决什么问题”。这道题如果只是列工具名字很拉胯你要能说出每个工具的核心用法和适用场景。Burp Suite是抓包改包的主力笔试里也经常出现关于代理配置的问题——比如浏览器如何配置代理指向Burp、HTTPS流量抓不到时如何处理证书、拦截到的请求如何修改后重放。这些如果你在笔试前没有真机操作过几遍现场很容易卡壳。SQLMap用来辅助SQL注入验证和利用但笔试考它时更喜欢问你如何通过手工判断注入点、SQLMap的几个关键参数——--batch跳过交互、--level和--risk控制探测深度、--os-shell尝试获取交互式shell。如果答不出这些参数含义阅卷人就会怀疑你只是听说过工具名。Nmap的端口扫描结果笔试也会给出来让你分析。比如它给你几行Nmap输出问哪几个端口最可能关联Web应用。这个问题其实不难看到80/8080/443/8443直接锁定就行主要是考察你能否把端口信息映射到攻击面判断上。在流量分析这块Wireshark是经常被忽略的工具但安全运营岗位非常依赖它。笔试会给出一个pcap包中的HTTP请求让你指出哪些是攻击流量。这种题考的是协议理解和特征识别比如UA字段异常、大量相同参数请求、路径包含/etc/passwd或SQL关键字都是明显的攻击特征。3.3 代码审计与白盒思路奇安信的代码卫士工具在热词里被反复提到说明很多人在搜索它。它本质是一个SAST静态应用安全测试工具用来在开发阶段扫描源代码里的安全缺陷。如果你面试的是Web安全工程师岗位即使你主要负责渗透测试代码审计能力也是一个重要加分项。笔试里的代码审计题通常给一段十几行到几十行的PHP或Java代码让你找出安全问题。PHP代码一般考的是$_GET和$_POST参数直接拼接进SQL查询、文件上传逻辑缺少校验、include用户可控变量、eval函数执行用户输入。Java代码一般考的是SQL拼接、Runtime.exec命令执行、Fastjson反序列化、RequestMapping的越权接口。我做代码审计题的习惯是三步走第一步先看外部输入点搞清楚哪些数据是用户可控的第二步跟踪数据流向看它们进入了哪些危险函数——mysql_query、include、eval、file_put_contents这类都属于危险函数第三步判断是否存在过滤或转义如果没有漏洞就成立。这个分析思路笔试现场同样适用比瞎猜要高效得多。还有一类题是给出代码修复建议。这里要注意修复建议不能是空话。比如修复SQL注入要具体写明使用PDO预编译或MyBatis的#{}占位符修复XSS要用htmlspecialchars配合设置ENT_QUOTES处理所有输出位点并说明需要根据输出上下文选择编码方式是HTML实体编码还是JavaScript十六进制编码。4. 面试高频问题与答题框架4.1 如何介绍你的项目经验笔试通过后面试环节大概率会要求你介绍自己做过的项目。这里最关键的是用STAR法则组织描述即背景Situation、任务Task、行动Action、结果Result。很多候选人只讲“我做了什么功能”完全没讲“为什么做、遇到了什么坑、最终效果如何”这在新人里特别常见。举个例子如果你想说自己做过一个登录接口的加固不要只说“我给登录接口加了验证码”。你可以这样讲之前系统收到大量撞库攻击我负责优化登录安全策略我做了三件事——加入了基于时间窗口的失败次数锁定、引入了滑块验证码、对所有登录接口加了频率限制最终撞库告警下降了90%。这个讲法好在哪里它体现的不只是技术能力还有问题定位能力和闭环思维。安全岗位本质上是一个解决问题型岗位面试官想看到你面对一个实际安全问题时能不能从发现、分析、解决到验证形成一个完整链路。4.2 高频技术问题的标准答法面试中技术问题很多但我复盘下来有几个问题几乎必问而且大多数人的回答都太浅。第一个是“SQL注入如何修复”。不要只答“参数化查询”要分层回答首先在最底层所有SQL执行必须走预编译不允许拼接SQL语句其次在应用层对用户输入做白名单和类型校验对动态表名、排序字段这类无法预编译的场景做严格白名单最后在边界层部署WAF作为兜底并说明WAF只能缓解不能根治。第二个是“反射型XSS和存储型XSS哪个危害更大”。我的答法是存储型XSS危害更大。因为反射型XSS依赖用户点击攻击者构造的恶意链接通常只能影响点开链接的人而存储型XSS把恶意代码持久化保存在服务器上所有访问页面的用户都会中招更适合做大规模攻击和蠕虫传播。第三个是“给你一个授权渗透测试目标你从哪开始”。这个问题在笔试和面试里都会出现标准答法是从信息收集开始——先解析域名找到IP对IP做全端口扫描识别开放服务再对Web服务做指纹识别确定中间件、CMS和开发框架同时收集子域名因为子域名的安全防护通常比主站弱然后针对指纹结果搜索公开漏洞利用已知漏洞进行突破。4.3 开放性问题的答题思路奇安信的面试官经常会问一个开放性问题“如果客户环境被入侵了你会怎么应急响应”。这题没有标准答案但答题框架要完整。我的思路是四步第一步隔离先断开受影响服务器的外网连接防止攻击者继续连进来但不要断电关机否则内存里的攻击线索就丢了。第二步取证保存当前进程列表、网络连接、登录日志、Web访问日志把这些信息固化下来。第三步分析通过日志还原攻击者的入侵路径——从最初的漏洞点到拿到的权限到植入了什么文件全部梳理成时间线。第四步清除和恢复删除恶意文件、修补漏洞、修改所有泄露的凭据然后恢复业务并加强监控。开放性问题的核心不是考你答得全不全而是考你有没有真实经历过这个场景或者至少对应急响应流程有清晰的体系化认知。即使你没有实战经验只要把流程讲得有逻辑、有顺序面试官也愿意给你机会。5. 笔试真题复盘与避坑实录5.1 我踩过的坑复盘这套笔试时我发现自己丢分主要在三类地方。第一类是基础题里的小细节。比如选择题问到Cookie属性时我把SameSite和HttpOnly记混了直接丢分。这类问题没有捷径只能靠考前把每个属性功能精确背下来并且多找几套模拟题反复做。第二类是简答题答得太浅。有一道题问“什么是CSRF以及如何防御”我当时只写了Token验证漏掉了SameSite属性校验、自定义Header校验、二次验证。这丢分很可惜因为不是不会而是答题时没有形成框架思维。后来我总结了一个习惯看到防御类问题先按“前端、后端、网络层、业务逻辑”四个维度来想一下就能拓展开。第三类是时间分配不合理。我在前面的选择题上花太多时间纠结导致后面的综合分析题时间不够。当时有一道恶意流量分析题我草草看了几眼就写答案很多特征没有识别出来。我的经验是选择题如果20秒内没有思路先标记跳过等全部大题做完再回头思考。5.2 常见问题速查表我把这套笔试卷里反复出现的考点和易错点整理成了一个速查表方便你考前集中复习。考点常见问法易错点答题要点SQL注入判断是否存在注入、如何修复忽略闭合方式判断先测单引号、再测布尔条件、最后讲参数化查询原理XSS三种类型区别、HttpOnly作用DOM型XSS的成因说不清反射/存储型在服务端拼接DOM型在前端JS中拼接CSRF如何防御、Referer能否作为唯一防线忽略XSS会打破CSRF防护TokenSameSite校验来源HeaderXSS存在时防御失效SSRF给出URL抓取功能如何分析只想到访问内网补充云元数据、协议限制、DNS重绑定绕过文件上传找出上传逻辑问题只答黑名单不可靠白名单扩展名内容校验上传目录禁止执行文件包含给出include代码分析漏洞忽略远程包含本地可读文件、远程可执行代码白名单修复代码审计给一段代码找出问题没有先找用户输入点输入点→数据流→危险函数→是否过滤四步分析渗透测试如何对目标站做渗透漏掉信息收集和报告环节流程要完整从授权到报告形成闭环这张表的本质是帮你建立“考点映射”每个考点背后都对应一类真实场景。你不需要背表而是看到题时能快速判断出题人在考你哪个场景答案自然就有了。还有一个小提醒笔试备考时不要只背题一定要自己动手搭一个靶场DVWA、Sqli-labs、Pikachu、Upload-labs我都刷过。奇安信笔试里的场景题很多就是把靶场里的经典题型改编出来的。你把靶场里的漏洞亲手打一遍再亲手修复一遍笔试里的分析题基本就不会卡壳。最后再分享一个我个人的体会准备这类笔试最忌讳的就是把安全当成一门“知识”来学只背结论、不到实验环境里验证。我见过很多人能背出OWASP Top 10但一看到真实攻击流量就完全懵。反过来如果你真的动手在靶场里打过一遍积累到即使看到一段日志、一行代码、一个请求包都能联想到攻击手法的时候这套笔试的通过率就已经很高了。实践过程中的那些不舒服和卡壳才是让你真正成长的部分。