二进制安全找实习记录

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

  • 简短的自我解释
  • 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 必须会,哪可能就直接结束了,乐)

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Word粘贴时出现“运行时错误53,文件未找到:MathPage.WLL“的解决方案

在安装完MathType后,打开word复制粘贴时报错“运行时错误53,文件未找到:MathPage.WLL” 首先确定自己电脑的位数(这里默认32位) 右击MathType桌面图标,点击“打开文件所在位置”, 然后分别找到MathPage.W…

【原理图与PCB专题】使用Cadence如何在Layout时直接互换相同功能的PIN

在实际的项目中,比如有一些排阻、FPGA、ESD二极管引脚其实是可以互换的,但是如果没有使用PinGroup属性功能,对于大公司原理图设计与PCB Layout分开的情况,我们可能需要按以下步骤: 这个步骤中存在通知和等待过程,如果存在多次(如多个器件,或是修改后调整又觉得不合适)…

LeetCode 面试经典150题 121.买卖股票的最佳时机

题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易…

python 直方图

python可以调用hist方法绘制直方图。 import matplotlib.pyplot as plt import numpy as np; plt.rcParams["font.family"]["SimHei"] # 确保图中中文字体正确显示 x[0.1,0.2,0.3,0.4,0.5,0.6,0.1,0.2,0.2,0.2] plt.xlabel(满意程度) plt.ylabel(频数) …

npm下载慢换国内镜像地址

1 设置淘宝镜像地址 npm config set registry http://registry.npm.taobao.org 2 查看当前下载地址 npm config get registry 3 其它镜像地址列表: 1. 官方镜像:https://registry.npmjs.org/ 2. 淘宝镜像:https://registry.npm.taobao.o…

机器学习模型—XGBoost

机器学习模型—XGBoost XGBoost(Extreme Gradient Boosting)是由陈天奇等人于2014年提出的一个高效可扩展的梯度提升库。它在梯度提升框架的基础上进行了优化和改进,被广泛应用于机器学习竞赛和实际应用中 作为GBDT(Gradient Boosting Decision Tree)的扩展版本,XGBoost在算…

门牌制作-蓝桥杯?-Lua 中文代码解题第3题

门牌制作-蓝桥杯?-Lua 中文代码解题第3题 小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 …

3D Occupancy 预测冠军方案:FB-OCC

文章结尾有视频和连接 背景知识 Occupancy 更像是一个语义分割任务,但是它是 3D 空间的语义分割它的我们对 Occupancy 分自己的期望是它能够具有通用的这种目标建模的能力,才能够不是不受制于这种目标框这种几何的矩形的这种约束而能够建模任意形状的这…

springboot蛋糕订购小程序的设计与实现

摘 要 相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低商家的运营人员成本,实现了蛋糕订购的标准化、制度化、程序化的管理,有效地防止了蛋糕订购的随意管理,提高了信息的处理速度和精确度,能够及时、准确…

废狗的Python连接MySQL之旅

我想本地用python连接mysql中的表,但是我不会。。。。 MySQL 安装mysql MySQL下载与安装-CSDN博客 安装可视化界面navicat 链接:https://pan.baidu.com/s/1esCF7W1Xwh1kIiw0OmKtjg 提取码:f4s0 开启mysql服务 net start mysql //开启 …

Nginx高级技术: 代理缓存配置

一、缓存说明 Nginx缓存,Nginx 提供了一个强大的反向代理和 HTTP 服务器功能,同时也是一个高效的缓存服务器。一般情况下系统用到的缓存有以下三种: 1、服务端缓存:缓存存在后端服务器,如 redis。 2、代理缓存&#…

【Leetcode】top 100 矩阵

73 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 方法一:拷贝出一个同样大小的矩阵,根据拷贝矩阵在原矩阵上修改元素; 空间复杂度O(mn) 方法二&…

数据分析-Pandas的直接用Matplotlib绘图

数据分析-Pandas的直接用Matplotlib绘图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

【LeetCode热题100】23. 合并 K 个升序链表(链表)

一.题目要求 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 二.题目难度 困难 三.输入样例 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,…

在react中使用tailwindcss

安装tailwind css npm i -D tailwindcssnpm:tailwindcss/postcss7-compat postcss^7 autoprefixer^9安装 CRACO 由于 Create React App 不能让您覆盖原生的 PostCSS 配置,所以我们还需要安装 CRACO 才能配置 Tailwind。 npm install craco/craco配置CRACO 在项目根…

【Algorithms 4】算法(第4版)学习笔记 18 - 4.4 最短路径

文章目录 前言参考目录学习笔记0:引入介绍1:APIs1.1:API:加权有向边1.2:Java 实现:加权有向边1.3:API:加权有向图1.4:Java 实现:加权有向图1.5:AP…

android studio设置flutter和dart的sdk配置

提示没有配置dart sdk的时候,其实只需要配置一下flutter的sdk就可以了,因为flutter的安装包里面包含了dart的sdk: 按照提示选中这个flutter的安装包路径就可以了: 并且需要开启windows的开发者开关:start ms-settings:…

Rancher操作手册(v2.7.5-rc1)

1.登录 访问地址:10.66.55.132使用账号和密码登录。初始的页面是英文版本,可以点击左下方改为简体中文 登录成功后可以看到现有的集群。右上角可以进行新集群的创建和导入已有集群。点击箭头所指的蓝色集群名称可以进入集群。 2.集群仪表盘 进入到集…

文字弹性跳动CSS3代码

文字弹性跳动CSS3代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 文字弹性跳动CSS3代码

神经网络中激活函数的绘制——阶跃函数、sigmoid函数、ReLU函数

一、阶跃函数 import numpy as np import matplotlib.pylab as plt def step_function(x):return np.array(x>0)x np.arange(-5.0,5.0,0.1) y step_function(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) plt.show() 二、sigmoid函数 import numpy as np import matplotlib.p…