文章

字节跳动 三面记录

前言

录屏了,故整理了详细的聊天记录

三面面试官感觉是主管,部门负责人之类的,感觉非常专业。最后反问的时候试探性的问的问题,竟然解答了我这么久以来的疑惑

以下是面试记录

过程

面试官:
不好意思,会议室才空出来,有点迟了。那咱们开始吧。XXX你好,我是今天的面试官。等下面试过程中,我可能会低头打字记录一下你的面试表现,你正常表达就可以。

面试者:
好的。

面试官:
那请你先做个自我介绍吧。

面试者:
好的。我是XXX,目前是XX大学的一名大二在读学生。平时主要是在 Nu1L 战队做 Web 安全方向,主要内容是打 CTF 比赛,包括渗透、Web白盒这些内容。

面试官:
好的。你是什么时候加入 Nu1L 战队的?

面试者:
正式加入应该是上学期,也就是大二上。当时我在 Nu1L Junior 子队打了差不多快一年的比赛,因为比赛输出比较稳定,成绩也还行,所以就被拉进了主队。

面试官:
那你是怎么接触到这些比赛,包括接触到安全这个行业或者领域的?

面试者:
这个说来话长。我接触计算机很早,大概小学的时候就接触了。但那时候其实没有接触安全,当时是看一些黑客题材的小说,觉得很帅,所以算是埋下了一个伏笔。初高中也稍微了解过一点,但没有做深入研究。

直到上大学之后,我看到学校里有一个 CTF 社团的海报,当时感觉海报看着很帅,内容也挺有趣,就加入进去试了一下。之后就开始接触一些基础的 CTF 题目,在一些平台上刷题。后面就跟着学长的足迹去打联队招新赛,然后加入联队这样子。

面试官:
有没有什么印象深刻的CTF题目?

面试者:
一时半会儿想不起来,自己出的题算吗?

面试官:
也可以。

面试者:
京麒 CTF 2026 出了两道 Web 题,都是前端安全方向。第一道题是悬空标记注入。这个漏洞在目前较新的 Chrome 浏览器上直接是打不通的,因为浏览器会过滤 URL 里的换行、左右尖括号等内容,不会把请求发出去。我看到过一篇文章,说可以通过 link stylesheet,再结合 UTF-16 编码绕过 Chrome 的过滤。把相关内容编码成 UTF-16 后,就可以成功发出去。我当时觉得这个点很有意思,就基于它出了一道题。

第二道题也是前端安全,主要是 CSS leak 。CSS 里有属性选择器,可以匹配页面中的内容,进而预测并泄露。我当时设计得比较精巧,有一个截断。比如假设截断到 150 位,那么前面全部填 a,这样就可以预测整个网页的内容,把整个网页当作某个属性值,然后再预设 16 个仅改变最后一位的匹配项。哪个匹配成功,就通过 background-image 发出请求。这样不断移位,在规定时间内就可以拿到 flag。

面试官:
好的。第二道题有遇到过“搅屎棍”吗?比如非预期解,或者一些通杀方法?

面试者:
第二道题没有非预期解。那道题全场一共就两个解,而且几乎是最后才解出来的。

但是第一道题确实遇到非预期了。第一道题是悬空标记注入,原本预期的利用方式是 style,但是我当时防御没有做好,所以第一道题被很多人用 CSS 侧信道,也就是类似第二道题的解法解出来了。

面试官:
好的。打过 AWD 吗?

面试者:
说实话,没打过 AWD。我打过 AWDP,就是单机版那种。

面试官:
其实我是想问,AWD 里面有什么你听说过的,或者凭想象来说,有什么可以偷塔之类的方式?

面试者:
因为我没打过,所以我猜一下。一般 AWD 是每个人维护一个服务器。如果有统一的初始 SSH 密码,或者端口都是 22,密码也比较规律,那么比赛刚开始的时候可以尝试登录其他人的服务器。

还有一种情况,如果比赛公开流量包,就可以审计流量包,分析其他人的攻击细节,偷别人的 payload,然后直接打。

面试官:
好的。我看到你简历里写到有一定的工程化和自动化能力,你也出过题目、搭过场景。那如果你在AWD 的时候遇到这种情况,会有什么临场思路或者预先防范措施?

面试者:
如果是刚才说的 SSH 情况,我觉得第一步是赶紧改密码。不过改密码可能有点慢,可以提前准备一个公钥,然后改成仅允许密码登录,不允许密码登录。这样即使别人拿到了密码,也无法登录。

其他的方面,因为我不是特别懂 AWD,所以不是很确定。

面试官:
好的。有遇到过比赛题目的运行环境被提权的情况吗?

面试者:
遇到过。我记得上上个月打过一个 XXX 赛。有一道题第一段是比较普通的漏洞,第二段有提权。当时我没找到正确的提权方式,但是看到系统版本,我就直接打了 copy file 相关的提权方式。

当时我是把 su 替换掉,让它直接把 flag 写到一个静态目录里,使所有人都能访问。虽然那道题是容器题,但后面比赛后台不知道是 K8s 配置问题还是什么原因,说是打到了宿主机,导致所有相关容器里的 su 都被替换了。后面很多人只要一开启题目,就能直接拿到 flag,相当于变相非预期了。

面试官:
那主办方除了重置环境之外,还做了什么?

面试者:
主办方没有重置环境。后面就是所有人都能拿到 flag,这道题成了解出最多的一道题(笑

面试官:
行。你刚才举的几个例子其实都比较偏 Web 前端。你对纯 Web 安全,比如服务端、接口这些了解得多吗?

面试者:
了解一点。毕竟打 CTF 的话,基础的 Web 安全还是都要学的。除了 Java 安全我不是很懂,其他基础内容在前期刷题和打比赛的时候基本都遇到过。

只是后面打国际赛时,基本有一半题都是前端安全,所以我对前端安全了解更多一些。

面试官:
好的。服务端常见的硬漏洞,比如 SQL 注入、CSRF 这些我们先不提。文件上传遇到过吧?

面试者:
遇到过。

面试官:
如果文件上传是上传到云存储里,还有什么进一步的利用方式?

面试者:
云存储是指存储桶吗?

面试官:
对。

面试者:
这个我好像还真没怎么遇到过。我想一下。一般来说,如果文件上传到存储桶,可能会涉及签发临时密钥,然后通过这个密钥 PUT 到存储桶上。

我觉得这个就不只是单纯文件上传了,还涉及云安全。虽然我对云安全了解不是特别多,但可以尝试打签发密钥的过程。比如密钥权限配置有问题,可能不止能上传,也许还能下载一些文件,或者访问其他资源。

面试官:
好的。XXE 遇到过吧?

面试者:
前期打新生赛的时候遇到过。

面试官:
XXE 常见的几种利用方式有哪些?

面试者:
如果有回显的话,可以定义一个外部实体,去读取 file:///etc/passwd,然后在后面引用这个实体。这样如果有回显,就会把文件内容暴露出来。

如果没有回显,可以打盲 XXE。比如构造 HTTP 请求或者 DNS 请求,通过外带的方式把数据带出来。还有一种是外部 DTD,在自己的服务器上定义 DTD 文件,然后在 XML 里引用它,通过外部实体进行利用。

不过我后面打国际赛时基本没怎么遇到 XXE,所以这部分了解主要来自刚开始打新生赛和刷题的时候。

面试官:
好的。你刚才提到 XXE 可以读文件,也可以发请求。它跟 SSRF 在执行过程上有什么区别?

面试者:
SSRF 主要是服务端接收一个 URL,然后因为对 URL 的过滤不够,服务端会去请求这个 URL,再把请求结果返回。比如在 PHP 里,如果协议过滤不完整,允许 file 协议,就可能通过服务端去读文件。

XXE 主要体现在 XML 解析上,本质上是 XML 解析时允许外部实体导致的问题。只要有 XML,并且允许用户输入,同时解析外部实体,就可能出现 XXE。

而SSRF 是可以通过过滤协议、限制 IP 和域名等方式防御的,比如只允许 HTTP 或 HTTPS,对内网 IP、特殊域名做限制。

面试官:
好的。越权测过吧?常见的水平越权、垂直越权、无鉴权。

假设你今天入职了一家新公司,公司交给你一套网站。这个网站不知道是谁写的,也不知道有没有维护。代码、文件、日志、服务器、安全组件,只要你能想到的东西都有,但是不知道里面藏了多少问题。你现在的目标是要发现里面所有的无鉴权,你会怎么做?

面试者:
无鉴权主要是 API 层面的问题。首先我会想办法获取它所有的 API,以及对应的使用方式。

第一步可以做扫描,看有没有 Swagger、JSON 接口文档,或者其他定义 API 格式的文件。如果有的话,就可以直接根据文档去测试。

如果没有,就去扫前端。因为前端一般会涉及 API 交互,可以在 JS 里找到各种接口以及对应的使用方式,然后逐个测试。

面试官:
如果扫出来一万个接口呢?

面试者:
如果有一万个接口,那可能就需要写脚本自动化测试,或者看有没有相关工具,也可以借助 AI 帮忙分析和测试。

(草,真的会有一万个接口吗,不会了)

面试官:
如果有所有的代码,还有什么其他方法可以把所有接口跑出来?

面试者:
如果是白盒,就可以直接审计代码。一般路由都会有定义,比如 controllers 之类的,把某个路由挂载到某个处理函数上。可以把代码里的路由定义全部提取出来,也可以让 AI 辅助提取。

面试官:
假设有一类 POST 的无鉴权接口,该怎么样验证?

面试者:
POST 接口不是单纯 GET,所以首先还是要找它的正确发包方式,包括参数、请求体格式等。如果找不到,就只能根据接口名和常见参数去盲测,观察响应是否有变化。

面试官:
还有一类是 POST 请求,其中某一个参数,比如在 body 的某个 map 里加一行“from 内网”,整个请求就无鉴权了;不加这行,它就是正常需要鉴权的。

面试者:
这种我之前没怎么了解过。如果加一个参数就不鉴权,我感觉更像是后端设计的问题,甚至像一个后门。比如因为请求来源被标记为内网,就直接跳过鉴权,这会是一个很大的安全隐患。

面试官:
举一个比较真实的例子:商家查看自己的营业执照。如果 role 等于主账号,就不需要再鉴权,因为这是自己的店;如果 role 等于子账号,就需要再鉴权,看商家主账号有没有给子账号授权。那这种情况下,就可能通过加某些参数影响鉴权逻辑。

面试者:
原来如此。确实会有这种情况,加一个参数之后后端就认为不需要鉴权。这类问题我之前了解得比较少。

面试官:
还有什么其他方式能够把所有无鉴权发现出来?比如跑日志、看 buffer 或其他你能想到的东西。

面试者:
我想一下。除了工具扫描和代码审计,也可以关注一些请求头,比如某些转发头、来源头,如果加了某个 header 就不鉴权。还有一些 HTTP 协议版本差异,比如 HTTP/1.0 和 HTTP/1.1 在后端解析上是否会导致鉴权绕过,这类也可以考虑。

如果我是代码维护者,也可以在 Nginx 或网关层面记录一些异常访问模式。比如原本应该携带 cookie 的接口,没有 cookie 却返回了正常内容,就触发告警。也可以接入一些规则或智能引擎去检测这些模式。

(不太会这个,感觉挺业务,挺实战的)

面试官:
行,没事。渗透做过吗?

面试者:
做过一点。

面试官:
一点是多少?实战的话。

面试者:
一方面是设计题目,比如设计一些比较接近真实渗透场景的题。实际渗透的话,最近XXXXXX,但我做得不是特别多。

靶场也打过一些,比如 Hack The Box 上打过一些基础的渗透靶场。

真实场景里,因为我没有参加过护网或者攻防演练,没授权大多数情况下不太敢随便打。

面试官:
假设你现在打下了一个网站,拿到了一个低权限 shell,下一步可能会做哪些动作?

面试者:
首先做信息收集,看当前低权限用户能做到哪一步。比如如果是 www-data 这类用户,通常只能访问 Web 根目录附近的一些文件。那我会先分析这些文件有没有有用的信息,比如硬编码密钥、数据库配置、Redis 配置之类的。

如果拿到数据库或者 Redis 的高权限凭据,可以进一步尝试利用。还会看环境变量,里面可能有密钥、配置等信息。系统版本也一定要看,确认是否存在已知提权漏洞。

面试官:
假设你现在可以执行一个反弹 shell,或者说能执行一个木马,各种主动连接、反弹连接、端口复用都可以。你会选择 CS,还是自己搓一个,或者 Metasploit 之类的?

面试者:
如果是普通 CTF,我一般就单纯反弹一个 shell,比如 nc 反弹。但是 nc 反弹 shell 不太稳定。

C2 的话需要搭建服务器。我之前服务器到期了,所以现在 C2 用不了。如果临时场景下,我可能先 nc 反弹,然后再考虑做持久化。比如能不能加 SSH 公钥登录,或者做一些后门方式,例如开个端口,或者替换 sshd 做后门之类的。

面试官:
常用的 C2 是哪个?

面试者:
之前用过一个叫 XXX 的,还有一些衍生版本。但后面要么收费,要么功能不太完整,所以后来也没有怎么用了。原版的没有怎么用过。

面试官:
如果要扫内网,你会让跳板机自己执行,还是连上代理之后用自己的电脑去跑?

面试者:
我感觉如果通过自己的电脑做中转跳板再去扫内网,网络可能会不稳定。一般我会上传 fscan 之类的工具到目标机器上执行内网扫描。

因为像是在 Linux 上配置 proxychains 之类的,连接容易不稳定,网络断了会比较麻烦。

面试官:
做过 socks 代理吗?

面试者:
一般是用现成工具。

面试官:
这种 socks 代理能包七层,但是七层为什么不能再还原为 socks 代理?也就是 socks 转七层只能正向转,不能再反向从七层转回来。

面试者:
这个我不是很清楚,可能是 socks 本身的限制?因为我没有做过七层这么复杂的情况。我之前设计靶场最多也就三层网络,socks 只需要转三层,没有遇到过这种七层场景。

(不会,,,)

面试官:
好的。你学校开学之后,也就是大二暑假之后,大三有什么安排?

面试者:
大三的话,学校没有特别特殊的安排,主要还是上课。我会想办法请实习假,然后出去实习。

面试官:
好的,其他我没有什么想问的了。你看有什么想问我的吗?

面试者:
您是这个行业的前辈,我想问一下,您对安全这个行业未来的走势有没有什么预测?无论是 AI 安全、物联网安全,还是其他安全方向都算。我想了解一下,方便后续做职业规划。

面试官:
你指的走势是这个行业还存不存在吗?

面试者:
哈,,,差不多

(草,好精准)

面试官:
目前 AI 的冲击确实很大。在 AI 的加持下,大部分安全问题应该都能实现高度自动化发现,而且会极大降低发现门槛。所以对攻击方来说,有很大概率会有一批人被 AI 替代。

但是安全工作还会持续存在,但是需要非常懂 AI。因为代码多数是AI写的,会有很多安全问题。你需要知道 AI 怎么去”造粪“,以及怎么用 AI 去”铲粪“。

(一阵见血啊,大师我悟了)

最后

三面压力比二面小,既考察基础,也很重视实战场景下的业务能力

而且最后的反问,这个答案,可以说是赚到了。只能说不愧是业界大佬,洞察力远超我们这些还在迷茫的学生

等结果中,如果有进展那就是HR面了...

许可协议:  CC BY 4.0