二进制安全找实习记录

这篇具有很好参考价值的文章主要介绍了二进制安全找实习记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

就二进制安全岗而言,这里笔者主要面试了腾讯的科恩实验室内核安全和浏览器安全组,然后还面试了一些乙方(其它的就面了一下前后端开发,基本秒挂,这就不说了,笔者也没打算搞开发)。其实后面还面了个华子,但是一直没推流程,笔者也不太想等了,最后成功拿到腾子的实习offer 。这里主要记录一下腾子面经(面的其它乙方公司偏渗透,攻防的多,就不多说了,基本都是秒挂),然后有的问题忘记了,仅仅记录一下自己回忆起来的东西,当然这里问题问的先后顺序我也忘记了。
一面:

  • 简短的自我解释
  • gdb 断点的实现原理、硬件断点和软件断点的原理及其优缺点(答的一般)
  • c 语言如何实现类似面向对象的功能(经过好久的提示才答出来了)
  • 字符设备和块设备的特点,举例子哪些是字符设备,哪些是块设备(块设备举例就举了个磁盘,当时有点懵逼了,然后面试官不是很满意)
  • 是否了解过 linux 的内存管理、设备管理、进程管理等子系统的实现(了解过内存管理和设备管理,然后简单的问了下设备管理相关的东西)
  • linux 是如果通过文件名找到对应的文件内容的(inode巴拉巴拉)
  • inode 节点存储在那个位置,其数据结构是怎么样的(答的磁盘,然后面试官又问我在磁盘的那个区,不知道…,然后数据结构不知道)
  • 零拷贝和写时拷贝的概念以及他们分别解决了什么问题(答的很烂,反正就勉勉强强,太紧张了,最开始还把两个说反了,艹)
  • 讲下 dirty pipe 漏洞,你认为这个漏洞出现的原因是什么(这里我答的很烂,太紧张了,其实这里应该从 splice 系统调用和匿名管道讲起的,但是我直接就说 splice 未初始化,给面试官都搞无语了…)
  • splice 是为了解决什么问题,其为什么能够减少系统开销(我答的是直接在内核的page_cache中进行数据交换,然后他还接着问了下其它问题,但是我忘了)
  • 你是怎么接触到内核利用的(巴拉巴拉)
  • c++ 中 switch 语句在汇编层是怎么实现的(这里我说的 jump table,但是他问我除了 jump table 还有其他形式吗?然后我说不知道了…)
  • 接着上问:问我 jump table 存储在那个区域(这里我答的只读数据段)
  • 接着上问:问我还有什么结构是存储在只读数据段的(不了解,艹,这里其实还有很多可以说的,比如常量字符串啥的,但是脑子真懵逼了)
  • c++ 中引用和指针的区别,什么时候必须使用引用而不能使用指针(不清楚,说实话,我一直用的C,引用都没咋用过)
  • c++ 中引用和指针在汇编层有什么区别(不清楚,谁没事观察这个啊…)
  • 中断的执行阶段有哪些,缺点是什么(答的很烂,就把操作系统实验上学的搬了过去,面试管也不是很满意)
  • 利用中断实现系统调用为什么会增加系统开销(这个我真不知道咋说,反正就知道啥说啥了…)
  • 之前的 linux 中系统调用的实现,目前 linux 中系统调用的实现是怎么样,其为什么能够减少系统开销(之前是使用 int 0x80,现在是syscall/sysret,其只有使用了MSRs寄存器组,然后就巴拉巴拉)
  • linux 从用户态切换到内核态其寄存器信息保存在什么地方(内核栈栈底)
  • canary 的实现原理以及其是为了解决什么问题(栈溢出,然后讲下具体原理即可)
  • canary 存储在哪里(这里我答 TLS)
  • 接着上问:问我如何获取 TLS 结构(我答通过 fs:0x30)
  • 接着上问:只能用 fs 寄存器吗?(我答还可以通过 gs 寄存器)
  • 接着上问:fs 和 gs 寄存器有什么区别(我想了好久说了个没区别,然后面试官告诉我确实没啥区别,不同平台和架构用的不一样而言【这不是坑我吗?我还真以为有啥区别呢…因为我记得 fs 是针对用户态的,gs 是针对内核态寻找 per_cpu 变量的…】)
  • 还有很多问题,我都忘记了(但都是一些基础知识)…

注:V8 我答的不是很好了,哎,如果对 V8 不是很熟悉,最好就别写了

  • V8 讲下 turbofan 中你印象深刻的优化趟
  • 讲下 typer 趟主要做了什么
  • 讲下 load elimination 趟主要做了什么
  • 讲讲常数折叠
  • 讲讲逃逸分析
  • 你复现的漏洞其实都是很老的漏洞了,请问你有跟踪过最近的漏洞吗?(无…乐,笔者复现的基本都是 2020 的,然后面试官告诉我,其实 turbofan 现在几乎很难在挖到漏洞了,然后让我多跟踪一下目前的比较前言的技术或者漏洞)
  • 然后还问了一些 V8 相关的,笔者基本都是不了解,不清楚,所以就不记录了

然后就是闲谈了

  • 你有读研的打算吗?还是想直接工作?
  • 这两个方向你是更偏向于内核还是浏览器呢?(我答的内核)
  • 现在我们实验室其实搞 linux 内核比较少了,基本都是搞 Windows 和 MAC(悲,…这就应该算是婉拒了)
  • 然后就是经典反问:我问了下他们每天的工作日常
    • 他告诉就是优化 fuzz,分析 crash,写高 level 的利用脚本,形成武器库(然后我也不会 fuzz)
  • 最后他告诉我,fuzz 是必备的(又一次拒绝了?如果一开始面试就告诉我 fuzz 必须会,哪可能就直接结束了,乐)

这次面试面了一个多小时,虽然问的问题不算难,但是不知道为啥脑子一片空白,所以总体来说就是全程被拷打,虽然失败了,但是从面试中我也知道了自己的不足,以及以后应该往那个方向努力。

二面:
没想到挺到了二面,但是是群面,一共四五个人吧,有几个个内核组的,几个浏览器组的。
内核方向问的都挺基础的,没啥好说的,感觉有一个面试官是打CTF的,问的很多跟CTF相关

  • 用户态问了栈溢出、非栈上的格式化字符串漏洞、canary、ptmalloc的管理结构等基础,如果你打CTF,并且学习 PWN 两个月以上(大佬可能更快),基本都能答出来
  • 然后问了用户态子线程的堆管理相关的东西
  • 内核态问了一些常见的保护和绕过方式,然后还问了一些漏洞利用相关的,比如如何绕过 SMEP 等(这里得好好准备下,因为面试官会一直问你:还有其它方法吗?所以还是多总结一些漏洞利用姿势,和一些绕过相关保护的多种姿势)
  • 然后我简历上写了我软件安全课程写过 PE 病毒,所以问了我一些 PE 相关的东西,比如如何寻找某个函数的地址,然后问了下 IAT 等表,还问了我如何直接在kernel32.dll中寻找gadget(不用工具)【这里我答的比较烂,感觉不是面试官心中的答案】
  • 然后问了我一个自己之前原创的针对内核小对象 Double Free 的攻击方法,就问了我如果实施攻击,然后问了下内核堆风水的问题(但是其好像不是堆风水的问题,主要是Cross Cache Attack的问题)
  • 然后还有一些杂七杂八的问题,比如cpp逆向时,类的this指针保存在那个寄存器中等待问题,但是太久了,基本忘了

总结:基本问的都是漏洞利用相关的,由于笔者不会漏洞挖掘,所以基本没问我漏洞挖掘的东西。然后本以为会问我 linux 内核内存管理和设备管理的东西,但是没有问,只能说白(逃)准(过)备(一)了(劫)

浏览器方向一如既往的不会,早知道不写了,吐了,又被面试管拷打了

  • 又让我说 turbofan 呜呜呜…
  • 问了一些 V8 漏洞利用相关的,比较简单,然后让我讲了一个漏洞的利用,也还 OK
  • 问了一些 V8 对象模型相关的,比较简单
  • 然后问我编译原理、优化相关的,嗯…答的不是很好,后悔为啥大二没有好好学了
  • 然后还问我浏览器中的攻击面(没答上来,接触不久)
  • 当时还问我除了UAF漏洞,浏览器中还有哪些经常出现的漏洞(当时我已经被好几个面试官拷打了,所以心态有点绷,然后没答的太好,其实在浏览器中,类型混淆是经常出现的漏洞,然后 OOB 也是 JIT 优化中很常见的漏洞)
  • 然后还有一些杂七杂八的问题,主要是漏洞利用那一块的,忘了
  • 然后就是漏洞挖掘了,但是我不会,嘿嘿

最后还是问下了漏洞挖掘相关的

  • 问我在打CTF,拿到一个题目如何去挖掘漏洞(这里的答的调试分析)
    • 经典话术:调试分析 ==> patch 后继续调试分析(乐)
  • 然后我说我在一面后就去看了 AFL 源码,好家伙,立马让我讲下 AFL 架构(所以有时候不要多嘴,但是如果你答的好的话,会让面试官认为你的学习能力比较强。这里我说我去看 AFL 源码的原因是因为面试的部门就是搞漏洞挖掘的,并且一面、二面也强调要会 Fuzz,所以这里你给面试官一个留下你的理由,毕竟人家部门就是搞漏洞挖掘的,但是你却啥也不会)

经典反问:

  • 我说:师兄们可以给我一些学习上的建议吗?【这个是真心想问的,因为在二进制方向,自己一直都是一个人瞎搞,没有大佬带,完全没有体系】
  • 面试官主要还是说我搞的一些东西都太老了,让我多跟踪一些新的技术,后面还给了我一些建议,都挺好的

最后还是一如既往的要求会 fuzz 所以直接没了(所以为啥要我进二面,我一面不是说了我不会 fuzz 吗?呜呜呜)

总体来说基础的东西偏多,所以还是要注重一些底层的基础,如果你是大一或大二,建议学习操作系统、编译原理、数据结构的课程时好好学习,不要偷懒。如果想要从事浏览器安全的话,编译原理还是要好好学的,不然像我一样,很多优化都搞不懂…AST/IR Fuzz 也不会写…菜狗一个

HR 面
比较在意项目经历和实习经历,自己之前都没有项目经历和实习经历,然后整体说的也不好,所以基本没了(看HR一脸疑惑,猜测HR内心OS:这家伙啥也没有咋过的二面…)。其实挺不甘心的…哎,大小厂都不要我
虽然面的不是很好,但是还是过了,感谢HR小姐姐

后面就是漫长的等待过程…

总结:
总体来说开发方向找实习相对简单一下(笔者菜鸡开发都能面一面,虽然也被拒绝了),二进制方向只要你技术强,其实也还好,主要还是笔者太菜了

然后还投递了一些其它公司的安全岗,但是都没回复我(主要很多都是WEB渗透相关的,IOT倒是比较多,但是我不会【之前本来想搞IOT的,但是后面感觉没兴趣所以放弃了,但是IOT的话感觉要求就更好一些了,因为 IOT 比较卷,我认识的一些搞IOT的大佬(也是本科生)基本上都是有高危CVE的】),哎,搞安全,没技术,寸步难行…
===================== 后续 =====================================================
后面一些公司也给面了,但是感觉都是KPI,面的很快,挂的也很快

本来想等等华子的,但是还是算了,都一周没消息了,真的不想等了,所以直接签了腾子

感谢腾子,从此就是腾子的形状
二进制安全找实习记录,日记,安全文章来源地址https://www.toymoban.com/news/detail-853690.html

到了这里,关于二进制安全找实习记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【二进制安全】堆漏洞:Double Free原理

    参考:https://www.anquanke.com/post/id/241598 次要参考:https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下: 释放的chunk 会以单向链表的形式回收到fastbin 里面。 fastbin 是 LIFO 的数据结构,使用单向链表实现。 示例代码: 需要使用glibc 2.27编译。 Linux下更换glibc版本的方法:https://blog.csdn.

    2024年02月14日
    浏览(47)
  • 安全研究 # 二进制代码相似性检测综述

    本文参考: [1]方磊,武泽慧,魏强.二进制代码相似性检测技术综述[J].计算机科学,2021,48(05):1-8. (信息工程大学数学工程与先进计算国家重点实验室, 国家重点研发课题,北大核心) 代码相似性检测常用于 代码预测 、 知识产权保护 和 漏洞搜索 等领域,可分为 源代码相似性检测

    2024年02月02日
    浏览(40)
  • 安全研究 # 课题:二进制成分分析(Binary SCA)

    本文参考多篇文章写作而成,出处在文末注明(本文在课题开展过程中长期保持更新)。 SCA(Software Composition Analysis)软件成分分析,通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。通常用来对软件源码、二进制软件包等进行静

    2024年02月16日
    浏览(38)
  • 【渗透测试之二进制安全系列】格式化漏洞揭秘(一)

    相信学习过C语言的童鞋儿们,都有接触过比较基础的输入输出函数(例如,scanf和printf等),那么对于%s、%d、%f、%c、%x等 格式化符号 应该并不会感到陌生。学习过汇编语言,并且有逆向工程基础的童鞋儿们,应该都对C语言翻译成汇编语言代码的大概格式会有所了解! 我们

    2024年02月04日
    浏览(46)
  • 【踩坑记录】字节流数据按照string的方式读取然后按照string的方案存储,编码导致二进制数据发生变化,原理记录

    ​ 目录   问题缘由 背后原理 C#代码示例 总结           由于公司需求,需要读取游戏Redis数据做内外网数据迁移,没有与游戏组过多的沟通。  使用的数据类型是Hash, key是string,value是byte[]。以前对于编码的理解是:计算机底层存储的永远是01的二进制数据,编码是一种

    2024年02月07日
    浏览(55)
  • 二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

    pwn是ctf比赛的方向之一,也是门槛最高的,学pwn前需要很多知识,这里建议先去在某宝上买一本汇编语言第四版,看完之后学一下python和c语言,python推荐看油管FreeCodeCamp的教程,c语言也是 pwn题目大部分是破解在远程服务器上运行的二进制文件,利用二进制文件中的漏洞来获

    2024年02月09日
    浏览(38)
  • 二进制安全虚拟机Protostar靶场(2)基础知识讲解,栈溢出覆盖变量 Stack One,Stack Two

    Protostar靶场的安装和一些二进制安全的基础介绍在前文已经介绍过了,这里是文章链接 当系统向缓冲区写入的数据多于它可以容纳的数据时,就会发生缓冲区溢出或缓冲区溢出,用更简单的话说就是在程序运行时,系统会为程序在内存里生成一个固定空间,如果超过了这个空

    2024年02月09日
    浏览(39)
  • 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

    原题链接 本题我们先需要知道 十进制 如何转 二进制 二进制 如何转 十进制 十进制 如何转 二进制: 十进制转成二进制 例如 173 转成 二进制 就把173 短除法 除到0 然后 得到的余数, 从下往上写 二进制 转成 十进制 利用如图方法,把二进制 转成 十进制 本题是高精度,如何

    2023年04月26日
    浏览(50)
  • 将数据转二进制流文件,用PostMan发送二进制流请求

    一、将byte数组转二进制流文件,并保存到本地 byte [] oneshotBytes=new byte[]{78,-29,51,-125,86,-105,56,82,-94,-115,-22,-105,0,-45,-48,-114,27,13,38,45,-24,-15,-13,46,88,-90,-66,-29,52,-23,40,-2,116,2,-115,17,36,15,-84,88,-72,22,-86,41,-90,-19,-58,19,99,-4,-63,29,51,-69,117,-120,121,3,-103,-75,44,64,-58,-34,73,-22,110,-90,92,-35,-18,-128,16,-

    2024年02月15日
    浏览(47)
  • java图片转二进制流_java将文件转化成二进制流

    二进制流的主要编码格式是base64码。可以在网上找一些在线转base64编码的网站进行尝试转换。 例如:http://imgbase64.duoshitong.com/然后通过前端展现和下载。 前端显示二进制流图片(src中放置base64码及二进制流) 前端下载二进制流文件(herf中放置base64码及二进制流,download后面放

    2024年02月06日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包