首页 > 其他分享 >某手秋招安全工程师面试

某手秋招安全工程师面试

时间:2024-06-21 21:55:04浏览次数:21  
标签:XSS 面试官 漏洞 面试 https 秋招 某手 绕过 页面

一、自我介绍

自我介绍这块就根据每个人的情况介绍就好。一般来说,就是我叫xxx,是来自xxx学校xxx专业的本科生/研究生,再介绍下自己的校园经历,获得的一些奖项,如果是研究生,还可以介绍一下自己研究生生涯的科研经历等等。

二、有没有挖洞经历

有,但是暂时没挖到。
面试官接着问:看你简历上打CTF比较多是吧,那你是负责哪一块的呢?
回答:我是负责web和misc的,web方面就是做些RCE,反序列化,代码审计,文件上传,sql注入之类的题目。misc方面就是做些图像隐写,音频隐写,水印之类的题目。
面试官接着问:那你有打过什么比较大型的CTF比赛吗?
回答:NepCTF、第一届“华为杯”研究生创新大赛、SUCTF、XCTF

三、介绍下sql注入,从原理、分类、防御等几个方面介绍一下。

原理:通过某种方式将恶意的SQL代码添加到输入参数中,然后传递到SQL服务器使其解析并执行的一种攻击手法。
常见的注入方式:联合查询注入、报错注入、布尔盲注、时间盲注、宽字节注入、堆叠注入、二次注入。
宽字节注入是由于编码方式不同所导致的,页面采用utf-8编码,而数据库采用GBK编码就会造成宽字节注入。
报错注入是由于页面有报错信息的显示,所以可以利用一些报错函数将想要的信息通过报错信息得到。常用的报错函数有updatexml、extractvalue、floor结合rand、exp(当输入的值大于709的时候会报错)等等。
盲注分为布尔盲注、时间盲注。布尔盲注可以在页面不显示数据,只显示对错的情况下使用,根据我们输入的语句让页面呈现true还是false状态来判断语句是否成功。常用的函数有ascii、substr、length、concat、exists等。时间盲注是通过页面返回时间的长短来判断语句的成功与否。常用的函数有sleep、if、其余的跟布尔盲注差不多。
防御:

- 预编译,如使用参数化语句和绑定变量- 加强对用户输入的验证,识别恶意内容,过滤掉某些危险语句- 转义,把用户的输入当成文本以及用斜杠来转义- 将数据库异常信息隐藏- 防火墙、黑名单,禁止某些IP访问- 对数据库信息进行加密- 禁用某些参数,比如secure_file_priv等- 普通用户和系统管理员用户的权限要有严格的区分

绕过:

1. 过滤关键字    - 用/**/、分割关键字    - 双写绕过    - 大小写绕过    - 编码绕过2. 过滤逗号    - 简单注入使用join方法绕过    - 对于substr、mid函数可以使用from...for的方法解决,例如substr(str from pos for len);对于limit函数可以用offset的方法绕过。3. 过滤空格    - /**/    - 用括号绕过    - 用回车代替4. 过滤等号    - 用like、rlike、regexp这些模糊匹配函数5. 过滤函数    - 用等价函数绕过,例如:hex、bin、ascii三个函数可以相互替换。

然后面试官就叫我进行手工注入,那手工注入的语句我就不一一写了,相信会的人都会写。

四、XSS的原理,分类,危害,防御等等

XSS是跨站脚本攻击,通常指攻击者在网页中嵌入恶意代码,用户访问网页或点击链接触发恶意代码而被攻击。
分类:

1. 反射型XSS:非持久型XSS,最容易出现的XSS漏洞    原理:用户在请求某个url地址时,会携带一部分数据,攻击者可以将恶意代码注入到url中,如果服务器未对url携带的参数做判断或过滤直接返回响应页面,就会触发反射型XSS。    特点:非持久型、js代码在web应用的参数当中    数据流量走向:浏览器->后端->浏览器2. 存储型XSS:持久型XSS,最危险的一种XSS    原理:恶意代码被保存到服务器上,显示在HTML页面中,经常出现在用户评论的页面,攻击者将XSS代码保存到数据库中,当用户在此访问这个页面时,就会触发并执行XSS代码,窃取用户的敏感信息。    特点:持久型、危害性最大、js代码不在某个参数中,而是保存在数据库或者文件中    数据流量走向:浏览器->后端->数据库->后端->浏览器3. Dom型XSS    原理:基于文档对象模型(DOM)的一种漏洞。这种XSS与反射型XSS、存储型XSS有着本质的区别,它的攻击代码不需要服务器解析响应,触发XSS依靠浏览器端的DOM解    析,客户端的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行。    特点:非持久型    数据流量走向:url->浏览器

危害:

- 窃取cookie- 未授权操作,比如劫持会话,刷流量,执行弹窗广告,还能记录用户的键盘输入- 传播蠕虫病毒- 网站钓鱼,包括盗取各类用户账号- 网页挂马、进行恶意操作等

防御:

- 使用htmlspecialchares之类的函数,设置httponly- 对用户的输入输出进行过滤,对输出进行转义处理- 架设WAF,虽然不能完全解决XSS漏洞,但可以拦截大部分敏感数据,防止黑客利用

然后面试官问我CSP有了解吗?我只知道CSP是什么,但具体怎么利用CSP防XSS还真没了解过。(可以参考这篇文章:https://www.cnblogs.com/goloving/p/11186176.html)

五、SSRF的防御、绕过方法

SSRF是服务器端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF的攻击目标是从外网无法访问的内部系统。
防御:

- 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。- 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。- 限制请求的端口为http常用的端口,比如:80,443,8080,8090。- 黑名单内网IP。避免应用被用来获取内网数据,攻击内网。- 禁用不需要的协议。仅仅允许http和https请求,可以防止类似于file:///,gopher://,ftp://等引起的问题。

绕过方法:

- 限制为xxx.com域名时,可以利用@,比如[email protected]访问还是百度- 采用短网址绕过- 采用进制转换绕过- 利用特殊域名- 利用句号:127。0。0。1  => 127.0.0.1- CRLF编码绕过,%0d->0x0d->\r回车        %0a->0x0a->\n换行

六、websocket协议有了解吗(当时没回答出来)

可以参考这篇文章:https://blog.csdn.net/ly021499/article/details/127274924

七、http协议和https协议之间的区别

  • http是不加密的,https是通过SSL协议加密的
  • http是80端口,https是443端口
    面试官:你平常是用什么工具进行抓包的呢?
    回答:最常用的是burp。
    面试官:那你平常有抓过https包吗,你抓到的https包的数据流量是加密的吗?
    当时回答的都是一些字段加密,没有说到https包的加密,其实通过fiddler抓https包是可以清楚的看到所有的流量都是加密的。

八、jsonp有了解过吗

当时也是没回答出来。可以参考https://blog.csdn.net/Daisy_i/article/details/124806871

九、k8s漏洞以及云上攻防之类的有了解过吗

完全没接触过,也没回答出来,直接说了没了解过。

十、问了我实习经历的一些问题

我也就按照我实习的内容进行了一些阐述,介绍了一下我参加的隐写溯源项目。

十一、Linux的基础命令

  1. 当前主机外联命令
    我到现在也没明白问的具体是什么,所以也不知道回答什么。就说了ifconfig,ip route、netstat命令
  2. 查看当前进程信息命令
    ps -aux结合管道符来获得具体进程的信息
  3. 查看安装了哪些软件包
    当时就回答了一个rpm -list,后面查了一下还有rpm -qa,yum list installed,apt list —installed

十二、网络协议

  1. 三次握手
    客户端主动向服务器端发送一个请求,请求包中带有一个seq序列号,假设seq=x;服务器端接收到请求包后,返回一个响应包,响应包中带有对第一个报文的回答和一个新的序列号,ack=x+1,seq=y;客户端接收到服务器端的响应后,也发一个响应包,带有对上一个报文的回答,ack=y+1。至此,三次握手建立成功。
  2. OSI的七层
    物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

十三、有哪些常见的逻辑漏洞

密码找回漏洞,验证码绕过漏洞,越权漏洞,变量覆盖漏洞,支付漏洞。
然后问了我一些逻辑漏洞具体怎么实现的?
我就根据做靶场的一些经验说了一下,反正基本上就是对关键字段值进行修改。

十四、jwt令牌是什么(这完全是因为我在说逻辑漏洞的时候提到了,面试官才问的)

jwt全称json web token,是一种用于在网络应用之间传递声明的安全方式。
面试官:那jwt令牌分为几段呢?
我:三段。
面试官:那每一段是什么含义?
我:第一段是头部,包含令牌的类型和加密算法;第二段是载荷,包含需要传递的信息;第三段是签名,用于验证令牌的真实性。
面试官:那jwt攻击有哪些?
我:当时也没回答出来。但是面完之后一查,发现就是平常做题的那些方法,比如伪造密钥,空加密算法。

十五、给你一个cdn xss,你会怎么利用?

当时也是没回答出来,有大佬能给我讲讲吗。

十六、让我手撕代码,就是比较IP地址的大小

当时的思路就是根据.号进行分割,一位一位的比较。最后面试官提示我可以将IP地址转换为2进制直接进行比较就可以了。

以上就是面试的所有内容。第二天就收到了凉凉的邮件,废了。

标签:XSS,面试官,漏洞,面试,https,秋招,某手,绕过,页面
From: https://www.cnblogs.com/sbhglqy/p/18261566

相关文章

  • 近期面试笔记和个人规划
    在上海的第八年,工作的第四年,今年我二十五岁,和理想的自己还相差甚远.路漫漫其修远兮,溯洄从之,道阻且长,溯游从之,宛在水中央.Part1.面试题1.主流关系型数据库有哪些?2.SQL的性能怎么优化?3.表JOIN时候,底层有哪几种连接类型?4.项目中对Hadoop和Hive了解?对离线数仓和数据集成ETL的了......
  • 做完这些大模型项目,面试官直呼太牛了
    前言大语言模型正迅速成为互联网时代最热门的技术创新之一,虽然现在该技术尚处于起步阶段,但已经开始在一些企业应用中广泛部署。接下来,我们来看看大语言模型的10大应用场景。一、文本翻译二、恶意软件分析三、创造文本内容四、搜索五、代码开发六、检测和预防网络攻......
  • 2024最新最全【网络安全/渗透测试】面试题汇总
    思路流程信息收集漏洞挖掘漏洞利用&权限提升清除测试数据&输出报告复测问题深信服一面:SQL注入防护为什么参数化查询可以防止sql注入SQL头注入点盲注是什么?怎么盲注?宽字节注入产生原理以及根本原因产生原理在哪里编码根本原因解决办法sql里面只有update怎么利用sql如何......
  • 闲鱼面试:说说JWT工作原理?
    JWT(JSONWebToken)一种开放的标准规范(RFC7519),用于在网络上安全的传输信息,通常被用于身份验证。简单来说,你可以把JWT想象成一张小巧的、自包含的电子通行证。这张通行证里面包含了用户的身份信息,就像你在某个俱乐部的会员卡,上面有你的名字、会员等级等信息,拿着这张卡,你就能证......
  • 牛客网最强Java面试八股文(2024年6月持续更新)
    一、Java基础1.JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,java运行环境,为java的运行提供了所需环境。具体来说JDK其实包含了JRE,同时还包含了编译java源码的编译......
  • Java面试题及答案整理( 2024年 6 月最新版,持续更新)
    秋招金九银十快到了,发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~这套互联网Java工程师面试题包括了:MyBatis、ZK、Dubbo、EL、Redis、MySQL、并发编程、Java面试、Spring、微服务、Linux、Springboot、SpringCloud、MQ、Kafka面试专......
  • 【2024最新精简版】网络_Linux操作系统面试篇
    文章目录简述tcp和udp的区别?get和post请求有哪些区别?常用HTTP请求方式有哪些?进程跟线程的区别?僵尸进程?IO的多路复用?虚拟内存什么是OSI模型说一说HTTP协议说一说HTTPS协议HTTPS协议和HTTP协议有什么区别?......
  • Android面试题:App性能优化之电量优化和网络优化
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点电量优化Doze模式系统的行为进入Doze后看看App有没有奔溃就可以Standby待机模式针对某个应用处于上述模式,App会无法访问网络解决方案可以手动申请权限让用......
  • 秋招Java后端开发冲刺——基础篇2
    Java语言基础一、基本数据类型(8个)整型:byte(1字节)、short(2字节)、int(4字节)、long(8字节,使用时一定要在数值后面加上L)注:整型类型的最高位表示数据符号位,因此实际上数据的表示范围为(−......
  • 浅挖一下String类,解决String常见的面试题
    详解Java中的String类1.String是Java基本数据类型吗?许多同学在学习String类时,会误认为String类是基本数据类型,因为实实在在好像有点像C语言中的字符数组,字符,那不就是基本数据类型吗?可实际上不是的.在Java中String是个表示字符串的一个类,它是由字符组成的不可变......