介绍
上周面了某互联网大厂被刷(具体不便透漏)
感觉他们需要真正的大佬,我这种混子怕是没希望进去了,唉
笔者是某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检测方面的实践(面试官好像很重视这个问题,深入和追问一些细节,但我只懂一些皮毛)
问:谈谈操作系统原理,进程内存管理这些
答:八股文背诵开始…
总结
这是我经历过最难的面试,虽然没有算法题但感觉还是很难。不清楚本科生里能全会的有多少
人外有人,距离大厂还有很远的路要走
卷大厂的大佬太多,看来我只能去小厂了
更新:已躺平,拒绝了所有面试和笔试,静心学习