一、腾讯安全技术岗初面面经解析
(一)自我介绍
简要介绍自己的教育背景、对安全领域的兴趣起源、学习经历和技能特长。
(二)软件安全相关问题
- 说一下 PE 文件的大致结构。- 答案:PE(Portable Executable)文件结构包括 DOS 头、PE 头、节表等。DOS 头包含一些基本的信息,用于在 DOS 环境下运行;PE 头包含了文件的重要信息,如入口点、节表数量等;节表描述了文件中的各个节,如代码节、数据节等。每个节包含了实际的代码或数据。
- 恶意代码是如何注入进程的?- 答案:恶意代码可以通过多种方式注入进程,如 DLL 注入、代码注入、远程线程注入等。DLL 注入是将恶意的 DLL 文件加载到目标进程中;代码注入是将恶意代码直接写入目标进程的内存空间;远程线程注入是在目标进程中创建一个远程线程,执行恶意代码。
- 如何检查注入,发现后怎么办?- 答案:检查注入可以通过多种方式,如监测进程的模块列表、检查进程的内存空间、检测异常的系统调用等。如果发现注入,可以采取一些措施,如终止恶意进程、删除恶意文件、修复被修改的系统设置等。
(三)Ollydbg 相关问题
- 反调试和混淆技术。- 答案:Ollydbg 中的反调试技术包括检测调试器的存在、修改内存或寄存器的值以干扰调试、使用加密或混淆技术等。混淆技术可以通过重命名变量和函数、插入无效代码、控制流平坦化等方式来增加代码的分析难度。
- 硬件和软件断点的实现。- 答案:硬件断点是通过设置处理器的调试寄存器来实现的,当程序执行到特定的地址时,处理器会产生中断。软件断点是通过修改内存中的指令为断点指令来实现的,当程序执行到断点指令时,会产生中断。
- 如何实现自己的断点?- 答案:可以通过修改内存中的指令为特定的指令序列,当程序执行到这个指令序列时,产生中断或执行自己的逻辑。也可以使用 Hook 技术,拦截特定的函数调用,实现断点的功能。
- Ollydbg 如何实现调试?- 答案:Ollydbg 通过控制目标进程的执行,获取其内存和寄存器状态,从而实现对程序的调试。它可以设置断点、单步执行、查看内存和寄存器等。
- Ollydbg 的快捷键。- 答案:Ollydbg 有很多常用的快捷键,如 F2(设置断点)、F8(单步执行)、F9(运行程序)等。可以根据自己的使用习惯记忆一些常用的快捷键。
(四)杂项问题
- 是否了解 x86 架构?- 答案:了解 x86 架构的特点、指令集、寄存器等。可以介绍一些 x86 架构的优势和应用场景。
- 是否了解 C++?多态是如何实现的?- 答案:了解 C++ 的基本语法和特性。多态是通过虚函数实现的,在基类中声明虚函数,在派生类中重写虚函数,通过基类指针或引用调用虚函数时,根据实际对象的类型决定调用哪个函数。
- 虚函数在内存中的位置。- 答案:虚函数通常存储在类的虚函数表中。每个包含虚函数的类都有一个虚函数表,其中存储了该类的虚函数地址。对象的首地址通常存储着一个指向虚函数表的指针。
- 是否了解安卓逆向?- 答案:如果了解安卓逆向,可以介绍一些安卓逆向的工具和技术,如反编译工具、Hook 技术、内存分析等。如果不了解,可以表达对安卓逆向的兴趣和学习的决心。
- 是否了解 ARM 指令?- 答案:了解 ARM 指令集的特点、指令格式、寄存器等。可以介绍一些 ARM 指令集的优势和应用场景。
(五)从 Hook 到后门攻击
- 问及 Windows 系统的 Hook 技术,特别是除了 inline hook 之外的其他 Hook。- 答案:除了 inline hook,Windows 系统还有 IAT hook、ETW hook、消息 Hook 等 Hook 技术。IAT hook 是通过修改导入地址表中的函数地址实现 hook;ETW hook 是利用 Windows 事件跟踪机制进行 hook;消息 Hook 是通过拦截 Windows 消息来实现 hook。
- 我提到了后门攻击中的 Hook 机制,并成功将话题引导到 AI 安全。- 答案:可以介绍后门攻击中的 Hook 机制,以及如何利用 Hook 技术进行后门攻击。同时,可以探讨 AI 安全中的相关问题,如对抗样本攻击、模型窃取等,以及如何防范这些攻击。
(六)游戏外挂相关问题
- 平时是否玩游戏,比如射击游戏?- 答案:如实回答自己是否玩游戏,以及玩过哪些游戏。
- 如何对抗透视挂?- 答案:可以从多个方面回答,如加强游戏的安全防护机制,包括加密通信、反作弊检测、防止内存修改等;使用反作弊引擎,检测和封禁使用透视挂的玩家;提高玩家的安全意识,教育玩家不要使用外挂。
- 如何发现外挂?- 答案:可以通过行为分析、特征检测、内存扫描等方式发现外挂。行为分析可以通过监测游戏进程的行为是否异常来判断是否存在外挂;特征检测可以通过查找外挂程序的特定特征码来识别外挂;内存扫描可以通过扫描游戏进程的内存空间,查找可能被外挂修改的关键数据。
(七)爬虫相关问题
- 你做过爬虫吗?多少线程?使用什么语言?反爬机制是什么?- 答案:如果做过爬虫,可以介绍自己做爬虫的经验,包括使用的语言、线程数量、遇到的反爬机制以及如何应对反爬机制。如果没有做过爬虫,可以表达对爬虫技术的兴趣和学习的决心。
(八)反问环节
- 日常工作内容是什么?- 答案:了解安全技术岗位的日常工作内容,包括分析安全漏洞、检测恶意代码、加强系统安全防护等。
- 需要先学习逆向技术,然后分析外挂,写实习报告。- 答案:表达对学习逆向技术和分析外挂的兴趣和决心,同时询问关于实习报告的具体要求和重点内容。
- 对我的建议是什么?- 答案:听取面试官的建议,如加强哪些方面的知识学习、提高哪些技能等。
二、吉比特安全实习生面经解析
(一)xss 相关问题
- xss 了解过吗,从原理危害防护三角度回答。- 答案:XSS(Cross-Site Scripting),即跨站脚本攻击。原理是攻击者在目标网站中注入恶意脚本,当用户访问该网站时,浏览器会执行这些恶意脚本。危害包括窃取用户信息、篡改页面内容、进行钓鱼攻击等。防护措施包括对用户输入进行过滤和转义、设置 HttpOnly 标志防止脚本访问 Cookie、使用 CSP(Content Security Policy)限制页面可以加载的资源等。
- xss 对引号实体怎么绕过(a 标签)?- 答案:可以尝试使用其他编码方式,如十六进制编码、URL 编码等,或者利用事件属性(如 onclick、onmouseover 等)来执行恶意脚本。
- 富文本编辑器是如何解决 xss 漏洞问题的?- 答案:富文本编辑器可以通过对用户输入进行严格的过滤和转义,只允许特定的 HTML 标签和属性,同时对脚本标签和事件属性进行过滤或禁用。一些富文本编辑器还会使用白名单机制,只允许特定的来源的资源加载。
- 富文本肯定是要渲染出来的,他是怎么预防的呢?- 答案:可以使用 CSP 来限制富文本编辑器渲染的页面可以加载的资源,同时对用户输入进行严格的过滤和转义,确保渲染出来的内容是安全的。
(二)sql 注入相关问题
- sql 注入,拿 webshell 的方法有什么?- 答案:通过 SQL 注入漏洞,可以上传恶意的 PHP 文件或者利用数据库的文件写入功能来获取 webshell。例如,可以使用 MySQL 的 INTO OUTFILE 语句将恶意的 PHP 代码写入服务器文件系统,然后通过访问该文件来执行恶意代码。
- 通过哪些函数能写入?- 答案:在 MySQL 中,可以使用 INTO OUTFILE、LOAD_FILE 等函数进行文件写入操作。在其他数据库中也可能存在类似的函数或者漏洞可以被利用进行文件写入。
- udf 提权的底层原理是什么?- 答案:UDF(User Defined Function)提权是利用 MySQL 数据库的自定义函数功能,上传一个恶意的动态链接库(DLL)到服务器,然后在数据库中创建一个自定义函数,该函数调用恶意 DLL 中的函数来执行系统命令,从而实现提权。
- 你说预编译了解,那哪些情况不能预编译呢?- 答案:在一些复杂的查询中,如使用动态的表名、列名或者条件时,可能无法使用预编译。此外,如果数据库驱动不支持预编译或者开发人员没有正确使用预编译,也可能导致无法预编译。
- order by 为什么不能预编译呢?他语法树为什么会报错呢?- 答案:通常情况下,ORDER BY 子句可以使用预编译。但是,如果 ORDER BY 后面的列名是动态的,或者使用了函数、表达式等,可能无法使用预编译。语法树报错可能是因为预编译的 SQL 语句和实际执行的 SQL 语句在语法结构上不匹配。
(三)文件上传相关问题
- 文件上传,除了拿 webshell 还能做什么,传 html 后还能做什么?- 答案:文件上传漏洞除了可以用来获取 webshell 外,还可以上传恶意的图片、文档等文件,利用文件包含漏洞执行恶意代码;或者上传一个恶意的可执行文件,通过文件执行漏洞来执行恶意代码。如果上传了 HTML 文件,可以通过文件包含漏洞或者 XSS 漏洞来执行恶意脚本。
- apache php jpg 白名单怎么绕过,iis 呢?- 答案:对于 Apache 和 PHP 的 JPG 白名单,可以尝试利用文件上传漏洞结合文件包含漏洞,将恶意的 PHP 代码写入一个 JPG 文件的 EXIF 信息中,然后通过文件包含漏洞执行恶意代码。对于 IIS,可以尝试利用 IIS 的解析漏洞,如将恶意的 ASPX 代码写入一个 JPG 文件的文件名中,然后通过 IIS 的特定解析方式来执行恶意代码。
(四)csrf 相关问题
- csrf,你说用 token 具体是怎么实现的呢?- 答案:在 CSRF(Cross-Site Request Forgery)防护中,使用 token 的方法是在用户登录后,服务器生成一个随机的 token,并将其存储在用户的会话中。在发送敏感请求时,将 token 作为一个参数或者 HTTP 头一起发送。服务器在接收到请求时,验证 token 的有效性,如果 token 无效,则拒绝请求。
- 你说 jwt 是不是从网上看的?- 答案:如果了解 JWT(JSON Web Token),可以介绍 JWT 的原理和应用场景,以及自己是如何学习和理解 JWT 的。如果不了解,可以诚实地回答,并表达对 JWT 的兴趣和学习的决心。
(五)命令执行相关问题
- 命令执行,那个点为什么会有命令执行呢?- 答案:命令执行漏洞通常是由于应用程序没有对用户输入进行严格的过滤和验证,导致用户可以输入恶意的命令并被服务器执行。例如,如果应用程序使用了 PHP 的 system ()、exec () 等函数来执行系统命令,而没有对用户输入进行过滤,就可能存在命令执行漏洞。
(六)信息收集相关问题
- 信息收集会收集哪些东西?- 答案:信息收集可以收集目标服务器的 IP 地址、域名、操作系统类型、Web 服务器类型、数据库类型、开放的端口、服务版本等信息。还可以收集目标网站的页面内容、链接结构、表单参数等信息,以寻找可能存在的漏洞。
- 你说收集服务器信息,利用服务器漏洞是那个漏洞呢?- 答案:根据收集到的服务器信息,可以查找相应的漏洞。例如,如果发现服务器使用了特定版本的操作系统或软件,可以查找该版本的已知漏洞;如果发现服务器开放了特定的端口,可以查找该端口对应的服务可能存在的漏洞。
(七)文件包含相关问题
- 文件包含,具体哪些场景会出现文件包含呢?- 答案:文件包含漏洞通常出现在以下场景:动态包含文件时,使用用户输入作为文件路径;包含远程文件时,没有对远程文件的来源进行验证;包含本地文件时,没有对文件路径进行严格的过滤和验证。
- 文件包含除了用登陆日志拿 shell 还有什么方法吗?- 答案:文件包含漏洞可以通过包含恶意的 PHP 文件、利用文件上传漏洞结合文件包含漏洞、包含远程文件执行恶意代码等方法来获取 shell。
(八)内网域控相关问题
- 内网域控怎么打呢?- 答案:内网域控攻击可以通过多种方法,如利用漏洞获取域管理员权限、使用密码破解工具获取域用户密码、利用 Kerberos 协议漏洞等。具体的攻击方法取决于目标网络的架构和安全设置。
- 免杀做过吗?具体底层是什么原理呢?- 答案:如果了解免杀技术,可以介绍一些常见的免杀方法,如代码混淆、加密、加壳等,以及其底层原理。如果不了解,可以表达对免杀技术的兴趣和学习的决心。
- 钓鱼实操过吗?- 答案:如果有钓鱼实操经验,可以介绍钓鱼的过程和方法,以及如何提高钓鱼的成功率。如果没有实操经验,可以诚实地回答,并表达对钓鱼技术的认识和理解。
(九)业务漏洞相关问题
- 业务漏洞会吗?让你设计一个登录框如何才能安全?- 答案:业务漏洞包括逻辑漏洞、越权漏洞等。设计一个安全的登录框可以采取以下措施:对用户输入进行严格的过滤和验证,防止 SQL 注入、XSS 等漏洞;使用加密技术保护用户密码;设置合理的密码强度要求;使用验证码防止暴力破解;限制登录尝试次数;记录登录日志等。
- 具体校验合法登陆的模式有几种?流程是什么?- 答案:校验合法登录的模式通常有用户名和密码验证、双因素认证(如密码 + 手机验证码)等。流程一般包括用户输入用户名和密码,服务器验证用户名和密码的正确性,如果正确则生成会话并返回给用户,用户在后续的请求中携带会话信息进行身份验证。
三、EA China 游戏客户端面经解析
(一)操作系统的内存相关问题
- 虚拟内存是什么,物理内存到虚拟内存的映射怎么样的?- 答案:虚拟内存是一种计算机系统内存管理技术,它将物理内存和磁盘空间结合起来,为每个进程提供一个独立的、连续的地址空间。物理内存到虚拟内存的映射是通过页表来实现的。每个进程都有自己的页表,页表记录了虚拟内存页面和物理内存页面的对应关系。当进程访问虚拟内存时,操作系统通过页表将虚拟地址转换为物理地址,然后访问物理内存中的数据。
- 内存泄漏、内存溢出是什么?- 答案:内存泄漏是指程序在运行过程中,动态分配的内存没有被正确释放,导致内存占用不断增加,最终可能导致系统崩溃。内存溢出是指程序在运行过程中,申请的内存空间超过了系统所能提供的最大内存空间,导致程序无法正常运行。
(二)设计模式相关问题
- 了解过什么设计模式?- 答案:介绍一些常见的设计模式,如单例模式、工厂模式、观察者模式、策略模式等,并说明其应用场景和优点。
(三)内存优化相关问题
- 有做过什么内存方面的优化吗?- 答案:如果有内存优化经验,可以介绍一些具体的优化方法,如减少内存分配次数、使用对象池、优化数据结构等。如果没有经验,可以表达对内存优化的认识和理解,以及在未来的学习和工作中如何进行内存优化。
(四)多态和虚函数相关问题
- 多态是什么,虚函数怎么实现的?- 答案:多态是指同一操作作用于不同的对象可以有不同的表现形式。在 C++ 中,多态是通过虚函数实现的。在基类中声明虚函数,在派生类中重写虚函数,通过基类指针或引用调用虚函数时,根据实际对象的类型决定调用哪个函数。虚函数的实现是通过在类中添加一个虚函数表,每个包含虚函数的类都有一个虚函数表,其中存储了该类的虚函数地址。对象的首地址通常存储着一个指向虚函数表的指针。
(五)线程安全相关问题
- 线程安全的了解。介绍一下常见的锁(读写锁和信号量)- 答案:线程安全是指多个线程同时访问一个对象或方法时,不会出现数据不一致或错误的情况。常见的锁有互斥锁、读写锁和信号量等。- 互斥锁(mutex):用于保护共享资源,确保在同一时间只有一个线程可以访问该资源。当一个线程获取互斥锁时,其他线程必须等待,直到该线程释放互斥锁。- 读写锁(read-write lock):允许多个线程同时读取共享资源,但在写入资源时必须独占访问。读写锁可以提高并发度,因为多个线程可以同时读取资源,而只有一个线程可以写入资源。- 信号量(semaphore):用于控制同时访问共享资源的线程数量。信号量可以初始化为一个特定的数值,表示可以同时访问资源的线程数量。当一个线程获取信号量时,信号量的值减一;当一个线程释放信号量时,信号量的值加一。当信号量的值为零时,表示没有线程可以访问资源,其他线程必须等待。
(六)动画相关问题
- 动画了解过吗?问骨骼动画(只使用过 2d 帧动画..)- 答案:如果了解动画相关知识,可以介绍不同类型的动画,如 2D 帧动画和骨骼动画的原理和特点。- 2D 帧动画是通过连续播放一系列静态图像来实现动画效果。每一帧图像代表动画的一个瞬间,通过快速切换帧图像来产生连续的动画效果。- 骨骼动画是一种基于骨骼系统的动画技术。它将角色或物体的模型分解为多个部分,每个部分都有一个对应的骨骼。通过控制骨骼的运动,可以实现角色或物体的动画效果。骨骼动画可以实现更复杂的动画效果,并且可以减少动画文件的大小和内存占用。
(七)帧同步和状态同步相关问题
- 帧同步,状态同步是什么?- 答案:帧同步和状态同步是游戏开发中常用的两种同步方式。- 帧同步是指所有客户端在相同的时间点执行相同的游戏逻辑,通过同步输入来保证游戏的一致性。在帧同步中,每个客户端都独立计算游戏状态,然后将输入发送给服务器,服务器将输入广播给所有客户端,客户端根据输入和游戏逻辑计算下一个游戏状态。帧同步的优点是实现简单,客户端之间的同步性好,但是对网络延迟和丢包比较敏感。- 状态同步是指服务器维护游戏的状态,客户端通过与服务器通信来获取游戏状态。在状态同步中,客户端将输入发送给服务器,服务器根据输入和游戏逻辑计算游戏状态,然后将游戏状态发送给所有客户端,客户端根据游戏状态进行渲染和显示。状态同步的优点是对网络延迟和丢包的容忍度较高,但是实现相对复杂,服务器的负担较大。
(八)平台相关问题
- 主要是做手机游戏,ios 平台和安卓平台接触过吗?- 答案:如果接触过 iOS 和安卓平台的游戏开发,可以介绍自己在这两个平台上的开发经验,包括开发工具、技术特点和遇到的问题等。如果没有接触过,可以表达对这两个平台的兴趣和学习的决心。
(九)反问环节
- 用自研引擎吗?- 答案:了解公司是否使用自研引擎,以及自研引擎的特点和优势。可以询问引擎的技术架构、开发流程和团队协作等方面的问题。
- 有什么不足- 答案:询问面试官对自己面试表现的评价,以及自己在哪些方面还有不足。可以根据面试官的反馈,制定学习和提高的计划。
四、总结
通过对这些面经的分析,可以看出游戏及安全相关岗位的面试涵盖了多个方面的知识,包括软件安全、逆向工程、游戏外挂、爬虫、渗透测试、操作系统内存管理、设计模式、动画技术、同步方式等。在准备面试时,需要全面复习这些知识,并结合实际项目经验进行思考和总结。同时,要注意算法题的练习和代码的规范性,提高自己的编程能力和解决问题的能力。希望本文对求职者有所帮助。
版权归原作者 阿贾克斯的黎明 所有, 如有侵权,请联系我们删除。