某大厂安全工程师一面分享

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 某大厂安全工程师一面分享

介绍

上周面了某互联网大厂被刷(具体不便透漏)


感觉他们需要真正的大佬,我这种混子怕是没希望进去了,唉


笔者是某211本科,计算机不强势,学校甚至没有一个安全相关的社团,基本全靠自学


面试时间很长,是我经历最长的一次,大概一个半小时,没有算法题,纯粹聊技术


(正常官网投递简历渠道,没有内推,没有特殊要求)

**


面试内容

**


问:看你做java多一些,讲讲java内存马


答:servlet型,spring的controller和interceptor型,然后具体展开,比如context如何获取,怎样结合反序列化利用等


问:那你讲下如何查杀java内存马


答:github有大佬写过内存对象搜索工具,之前看过一篇相关的文章,然后展开编了一些。主要思路是利用Java Agent技术遍历所有已经加载到内存中的class,是否恶意类名,再web.xml是否匹配得到,是否能找到本地classpath下对于字节码文件,classloader是否合法


问:冰蝎和哥斯拉了解吗,讲讲原理


答:用过不知道原理


问:你在长亭和字节实习做了什么事


答:实话实说


问:谈谈绕waf的实战经验


答:sql注入开始,分块传输内联版本注释,fuzz参数污染等等,然后谈上传绕content-type改filename绕文件头,xss的一些技巧等


问:熟悉webshell免杀吗


答:很早以前做过,大都忘了,比如参数覆盖,编码解码,能想到的都编了下(最近认真研究了下JSP Webshell免杀,参考https://github.com/EmYiQing/JSPHorse


问:做过其他免杀吗


答:cs和msfvenom玩过一点,比如shellcode编码绑exe等,然后花指令,异或编码,golang加载器,还有tidesec在github公布的文档和工具


问:谈谈fastjson反序列化原理和利用链吧


答:jdbcrowsetimpl,templatesimpl,basicdatasource,mysql connector等,比如jdbcrowsetimpl的setAutoCommit如何触发到lookup,lookup底层怎样实例化remoteobject。BasicDataSource的两种情况,toString触发点和高版本fastjson的$ref特性,以及跟入后BCELClassLoader的问题


问:数据结构熟悉吗,谈谈红黑树原理


答:从搜索二叉树,avl树的概念引入,主要是多种情况左右旋和染色情况的分类讨论,事先准备过的经典八股文


问:java的hashmap用到红黑树,讲下原理


答:散列表,链表加红黑树数组。围绕什么情况下链表转红黑树,什么情况下扩容,碰撞解决原理和扩容原理等方面开始背诵


问:有没有流量分析的经验


答:经常抓包,tcp到http都有(面试官提示不是这种,那就不知道了)


问:谈谈代码审计经验


答:正好最近看了java代码审计的书,谈了下各种基础web漏洞审计技巧,以及mybatis,springmvc等常用框架审计。联想到先知和freebuf等平台看过的文章,开始分享


问:看你有些cnvd和cve,讲讲过程


答:审计+黑盒+运气,其实都算是比较水的,含金量不高


问:有打过知名的ctf吗


答:没有,只玩过一些小ctf,比如ctfhub等


问:熟悉内网渗透,域控这些吗


答:了解不深,但基本的操作没问题


问:谈谈java反序列化的cc链吧


答:四个transformer的作用,templatesimpl,priority queue,tiedmapentry,hashmap和hashtable,包括长亭师傅的k1-k4,围绕这些来谈,其实都是换汤不换药。readObject跟下去,找lazymap.get触发transform方法,由于多态,lazymap本质是map,找到map.get这样比较常规的操作即可


问:看你重写过sqlmap,读过sqlmap源码吗


答:这个比较擅长,之前写过几篇sqlmap源码分析文章,从注入检测,dbms判断,如何脱库,到如何进一步利用,osshell原理等开始讲


问:看你熟悉mysql,讲讲索引,存储结构等


答:八股文背诵开始…


问:讲讲mysql为什么要用b+数


答:八股文背诵开始…


问:看过mysql源码吗


答:…


问:分析过二进制漏洞吗


答:没有,但ida和od基本使用没问题


问:有没有用汇编写过东西


答:简单的课程实验,破解一些crackme可以看懂汇编


问:谈谈linux内核的漏洞


答:…


问:挖过缓冲区溢出漏洞吗


答:没挖过但做过复现的实验,fuzz确定溢出点,打shellcode,绕aslr,反弹shell


问:python的沙箱逃逸了解吗


答:做过复现不懂原理


问:python的flask模版注入讲讲


答:做过复现和利用,猜测原理是利用python一些系统内置函数,构造命令执行,但没有具体分析过。然后谈了下thymeleaf的模版注入


问:抽象语法树了解吗


答:之前做过js逆向需要相关技术,目前在做java自动化代码审计工具,也需要先对语法进行分析,不过我是用写好的库,技术方面应该是编译原理相关,涉及到词法分析和一些算法吧


问:讲讲rasp的原理


答:程序运行时的自我保护,不修改代码就可以防护,比如asm,javaassist,javaagent修改jvm的字节码,实现拦截等功能


问:谈谈rasp的对抗


答:研究不深,看过先知有相关文章,忘记了


问:谈谈php和golang语言本身的安全问题


答:这方面了解不深,瞎编了


问:机器学习和算法相关懂嘛


答:做过一些简单的,比如svm和knn在xss检测方面的实践(面试官好像很重视这个问题,深入和追问一些细节,但我只懂一些皮毛)


问:谈谈操作系统原理,进程内存管理这些


答:八股文背诵开始…


总结

这是我经历过最难的面试,虽然没有算法题但感觉还是很难。不清楚本科生里能全会的有多少


人外有人,距离大厂还有很远的路要走


卷大厂的大佬太多,看来我只能去小厂了


更新:已躺平,拒绝了所有面试和笔试,静心学习


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
对于工程师的一些理解
对于工程师的一些理解
95 0
|
存储 Java 程序员
「职业职位」软件“开发者”和“工程师”有什么区别?
「职业职位」软件“开发者”和“工程师”有什么区别?
|
程序员
你可能没发现你只是程序员不是工程师
你可能没发现你只是程序员不是工程师
103 0
你可能没发现你只是程序员不是工程师
|
前端开发 架构师 Java
1.5 从程序员到工程师
1.5 从程序员到工程师
|
程序员 Java 开发工具
阿里工程师谈,什么是好的代码?
我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。显然,这个问题并没有唯一的标准答案,谁都可以谈论自己的理解,今天谈谈我对于好代码的理解。
7919 0
阿里工程师谈,什么是好的代码?
|
机器学习/深度学习 供应链 前端开发
技术人的灵魂 3 问,阿里工程师如何解答?
在业务团队做事的工程师摸爬滚打了一段时间后,一定会有所疑问。团队同学在最初的一段时间都提出这样的疑惑:如何在业务中发现有技术价值的问题?发现问题后如何思考和发起再到解决?最后的技术结果跟业务结果如何衔接?很多时候我们听别人说“思考是不够的/要多思考”,其实都是在说这几点。接下来,阿里高级前端技术专家氐宿谈一谈遇到这三个问题时,他是如何解决的?
技术人的灵魂 3 问,阿里工程师如何解答?
|
机器学习/深度学习 安全 Java
如何成为一个很厉害的工程师
如何成为一个很厉害的工程师
2246 1
|
自然语言处理 程序员 项目管理
41岁阿里工程师:35岁转管理,真的是必经之路吗?
墨玦,阿里巴巴 iDST 高级技术专家。博士毕业于北京邮电大学,计算机应用专业,目前主要从事语音技术工程化方面的研发。回顾在阿里的三年时光,他感慨良多,写下了这篇总结,与大家共勉。
7608 0
|
SQL 安全 项目管理
这是一篇工程师对产品经理的吐槽
优秀的产品负责人拥有塑造产品愿景的天赋,但如果负责人在产品的初始构想阶段就没能与工程师有效沟通,结果只会浪费时间、机会和人才,这样下去最后可能会毁掉一个项目。