当前位置: 首页 > news >正文

二进制安全找实习记录

就安全岗而言,这里笔者仅仅面试了腾讯的科恩实验室内核安全和浏览器安全(其它的就面了一下前后端开发,这就不说了,笔者也没打算搞开发),然后倒在了一面。然后有的问题忘记了,仅仅记录一下自己回忆起来的东西,当然这里问题问的先后顺序我也忘记了。

  • 简短的自我解释
  • 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 中系统调用的实现是怎么样,其为什么能够减少系统开销(syscall/sysret,然后就巴拉巴拉)
  • 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 必须会,哪可能就直接结束了,乐)

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

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

然后还投递了一些其它公司的安全岗,但是都没回复我,哎,搞安全,没技术,寸步难行…所以也不打算找实习了,考研吧

相关文章:

  • unity内存优化之AB包篇(微信小游戏)
  • 动手学习深度学习之环境配置
  • STM32中MicroLIB的关闭为什么会导致卡死----解析
  • 【数据结构】堆
  • zookeeper快速入门二:zookeeper基本概念
  • 145 Linux 网络编程1 ,协议,C/S B/S ,OSI 7层模型,TCP/IP 4层模型,
  • 2.3 物理层设备
  • 开发K8S Operator
  • [Django 0-1] Core.Checks 模块
  • 传统电力运维企业的数字化转型案例
  • 数据结构的概念大合集03(栈)
  • 使用Docker搭建Jellyfin
  • 阿里提前批(阿里云)一面30min
  • 【机器学习】分类模型的评价方法
  • 更安全的C gets()和str* 以及fgets和strcspn的用法
  • (三)从jvm层面了解线程的启动和停止
  • .pyc 想到的一些问题
  • android图片蒙层
  • CSS 提示工具(Tooltip)
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • extjs4学习之配置
  • Go 语言编译器的 //go: 详解
  • PermissionScope Swift4 兼容问题
  • SOFAMosn配置模型
  • Swift 中的尾递归和蹦床
  • Vue官网教程学习过程中值得记录的一些事情
  • windows下使用nginx调试简介
  • 好的网址,关于.net 4.0 ,vs 2010
  • 试着探索高并发下的系统架构面貌
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 白色的风信子
  • ​用户画像从0到100的构建思路
  • #includecmath
  • (12)目标检测_SSD基于pytorch搭建代码
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (solr系列:一)使用tomcat部署solr服务
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)负载均衡,回话保持,cookie
  • (转载)OpenStack Hacker养成指南
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .Family_物联网
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET gRPC 和RESTful简单对比
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET中统一的存储过程调用方法(收藏)
  • /dev/sda2 is mounted; will not make a filesystem here!
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @EnableWebMvc介绍和使用详细demo
  • @GetMapping和@RequestMapping的区别
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka