面灵AI→

腾讯 PCG 安全技术岗实习一面面经

轮次
一面
时间
2026-10
来源
牛客网

《面试题目》

  1. 是否了解 PCG 的安全业务主要做什么?
  2. 甲方企业的整体安全应该怎么做,需要注意什么?
  3. 介绍一下你的个人研究方向?
  4. 挑两个 OWASP Top 10 漏洞讲讲?
  5. 为什么项目中挖到的 SQL 注入点(邮箱登录框)只能用盲注?有没有别的方法?
  6. SQL 注入的防护措施有哪些?
  7. 预编译有什么局限?
  8. 详细讲讲简历项目中遇到的越权访问以及逻辑漏洞?
  9. QQ 空间这类业务怎么挖逻辑漏洞?
  10. 黄钻功能可能有什么逻辑漏洞?
  11. 除了黑盒渗透,你了解白盒吗?
  12. 一个工程项目的代码白盒审计思路是怎样的?
  13. 简历里开发的项目架构是怎么样的?
  14. 了解 AI 安全相关的内容吗?
  15. 平时用什么 AI 工具、什么模型?

反问环节

  1. 在 AI 时代,甲方公司的安全人员比较看重学生的哪些方面?
  2. 你对我的求职找实习有什么建议?

《参考解析》

为什么有些注入点只剩盲注,以及还有什么路。 邮箱登录框只能用盲注,根子在信道太窄:登录逻辑对外只回「成功/失败」两种状态,既不回显查询结果,也不回显数据库报错。没有回显位,联合查询(union select)就没地方吐数据;没有报错信息,报错注入也无从下手;剩下能观察的只有「真/假」和「响应时间」两个信道,也就是布尔盲注与时间盲注。要跳出盲注,思路是换信道而不是换 payload:一是想办法让数据库自己报错并把内容带出来(函数类型不匹配、extractvalue/updatexml 这类会回显错误的函数,前提是错误页可见);二是堆叠查询配合写文件、写日志,或 LOAD_FILE 走带外(DNS/HTTP 外带,要求数据库能出网);三是绕过这个点,去找同一条数据链路上回显更足的位置,比如注册、找回密码、订单查询、后台导出,这些位置往往有回显或报错;四是二阶注入——先把 payload 存进库,等后台某个查询或报表再取出来拼接时触发,此时回显条件完全不同。答题时把「为什么只能盲注」讲成数据传输通道的判断,比背盲注脚本更能体现理解。

预编译能挡什么、挡不住什么。 预编译(参数化查询)把 SQL 的语法结构和数据值分两次发给数据库,值永远被当成字面量,因此经典的单引号闭合注入被彻底堵死,而且还有执行计划复用的性能收益。但它的保护范围只在「数据位」,凡是要拼进语法位的东西它都管不了:表名、列名、ORDER BY 的字段与方向、LIMIT 的偏移量都无法参数化,只能走白名单校验;LIKE 的通配符和 IN 的占位符数量必须动态拼接,拼接时同样要校验。此外还有几类容易忽略的失效场景:部分框架提供非参数化插值(比如 MyBatis 的 ${} 与 #{} 的区别),开发者用错等于没防护;存储过程内部动态拼 SQL、字符集不一致带来的宽字节问题,都可能绕开预编译;还有二次注入,值与逻辑分离的前提在这里不成立。所以结论是「参数化必要但不充分」,完整的防护链还应包括最小权限账号、类型校验与白名单、错误信息不对外回显、以及上线前的代码扫描。

甲方企业安全该怎么搭。 这道题考的是视角切换:乙方渗透是「找洞」,甲方是「让洞尽量少、出了洞能发现能兜住」。可以从几条主线讲:资产与责任人清单(不知道有什么,其余都无从谈起)、身份与权限(统一登录、最小权限、离职回收、后台与数据接口的鉴权要覆盖到每个入口)、边界与加固(WAF、限流、访问控制、组件与依赖版本管理)、漏洞管理闭环(扫描、众测、SRC 上报进来之后谁修、多久修、有没有复测)、日志与检测响应(关键操作审计、告警与应急流程)、数据分级与合规、供应链与人员意识。落点在于「制度和流程比一次渗透重要」,这也是甲乙方的核心区别。

白盒审计的思路。 先把数据流画出来:入口(路由或 Controller)→ 参数校验 → 业务层 → 数据访问层 → 输出。然后在图上找交点——外部可控输入 × 危险操作,也就是 sink:SQL 拼接、命令执行、反序列化、文件上传与路径拼接、模板渲染、SSRF 的出网点、日志注入。实操上的顺序是:用全局搜索和 CodeQL/Semgrep 这类工具把可疑 sink 全捞出来,再逐个回溯它上面的输入是否可控、有没有过滤(过滤是否是黑名单、能否绕过);同时检查鉴权注解与拦截器的作用范围,越权漏洞往往出在「新加的接口忘了加权限校验」;再翻提交历史,看改动集中的地方有没有把校验删掉。工具只负责缩小范围,最终判定必须人工确认可达性,否则报出来的一堆都是误报。

业务逻辑漏洞(QQ 空间、黄钻这类)怎么挖。 逻辑漏洞的共同点是功能按设计实现、但设计漏了状态。挖法是先建两张图:业务状态机(浏览、试用、开通、生效、到期、退款、注销)与角色权限矩阵(游客、普通用户、黄钻用户、运营、后台)。然后逐条状态转移问三个问题——这一步服务端有没有重新校验前置条件?价格、数量、权益标识是不是由前端传来的?同一个请求并发两次会怎样?黄钻这类付费权益的常见漏洞点就落在这三个问题上:改价与改数量、越权替他人开通或领取、试用与正式权益边界不清导致过期不回收、并发下单或并发领取造成重复到账、跳过支付回调直接调用发货接口、以及只校验了页面可见性的「前端限制」。验证时用小号与沙箱环境,只做能证明问题存在的最小操作,拿到证据就停手。

反问环节的两问该怎么接。 「看重学生哪些方面」「有什么建议」这类问题,面试官一般会给出方向性的答案(基础要能自己讲清楚、了解企业安全体系、保持持续学习、多实习接触真实业务)。听的时候可以顺手把对方的答案接成下一句自我陈述,比如对方说「基础漏洞要能自己讲清原理」,就补一句自己在盲注那次是怎么从回显判断信道、最后怎么绕出来的——反问环节是最后一次给自己加印象分的机会,不要只说「好的谢谢」。