安全面试之基础总结篇【超详细!】

前言 

作者简介:不知名白帽,网络安全学习者。

博客主页:不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主

安全面试专栏:https://blog.csdn.net/m0_63127854/category_11869916.html

网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan

目录

1.CIA三元组

2.3389无法连接的几种情况

3.ARP欺骗原理

4.ARP欺骗的防护

5.CC攻击原理

6.什么是同源策略

7.TCP和UDP协议的区别

8.syn洪流的原理

9.多线程、对进程区别

10.什么是中间人攻击

11.防御中间人攻击的方案

12.描述TCP/UDP的区别及优劣,及其发展前景

13.如何判断计算机可能已经中马

14.木马的传播途径主要有哪些

15.恶意软件的定义

16.什么是网页挂马

17.网页挂马都有什么类型

1)框架嵌入式网络挂马

2)js调用型网页挂马

3)图片伪装挂马

4)网络钓鱼挂马(也称为伪装调用挂马)

5)伪装挂马

总结

18.为什么电子邮件病毒会有危险

19.远程访问工具的风险是什么

20.ICMP协议类型简述

21.防火墙的类别及其原理

22.HTTP响应状态简述

23.cookie和session的区别

1)存储的位置不同

2)存储的数据类型不同

3)存储的数据大小限制不同

4)生命周期的控制

24.ARP协议工作原理

25.GET和POST的区别

26.HTTPS和HTTP的区别

27.OSI的七层模型都有哪些

28.http长连接和短连接的区别

29.什么是SSL,SSL是怎么工作保证安全的

30.条件竞争漏洞原理与举例

31.如何验证存在XSS漏洞

32.如何验证存在任意文件下载的漏洞

33.Web短信重置密码可能存在哪几种绕过方式

34.XSS有哪几种类型

35.黑客可以通过XSS攻击做哪些事

36.XSS攻击如何进行防护

37.什么是CSRF攻击

38.CSRF攻击一般怎么实现

39.应该如何防范CSRF攻击

40.如何突破注入时字符被转义

41.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用

42.CSRF、SSRF和重放攻击有什么区别

43.SQL注入防护方法

44.代码执行,文件读取,命令执行的函数都有哪些

1)代码执行:

2)文件读取:

3)命令执行:

45.为什么参数化查询可以防止SQL注入

46.盲注是什么,怎么盲注

47.宽字节注入产生原理以及根本原因

1)产生原理:

2)根本原因:

3)解决办法:

48.mysql的网站注入5.0以上和5.0以下有什么区别

49.SSRF漏洞的验证方法

50.SSRF漏洞的成因、防御、绕过

51.文件上传漏洞原理

52.导致文件包含的函数

53.金融行业常见逻辑漏洞

54.SQL注入种类

55.SQL注入能做什么

56.文件上传漏洞绕过方法

57.文件上传防御方法

58.Sqlmap常用参数

59.XXE漏洞原理与防御

60.任意文件下载漏洞的修复方案

61.知道哪些XSS攻击案例简单说一下

62.CSRF攻击和XSS攻击有什么区别

63.以下链接存在sql注入漏洞,对于这个变形注入,你有什么思路

64.发现demo. jsp? uid=110注入点,你有哪几种思路获取webshell,哪种是优选

65.说出至少三种业务逻辑漏洞,以及修复方式

66.sqlmap怎么对一个注入点注入

67.延时注入如何来判断

68.owasp漏洞都有哪些

69.DOM型和XSS自动化测试或人工测试

70.对于XSS怎么修补建议

71.CSRF的防御

72.token和referer做横向对比,谁安全等级高

73.对referer的验证,从什么角度去做?如果做,怎么杜绝问题

74.针对token攻击,你会对token的哪方面进行测试

75.简述你知道的一句话木马

76.简述PHP代码注入和命令注入的成因和危害


1.CIA三元组

机密性,完整性和可用性 (也称为CIA三元组)是一种旨在指导公司和组织形成其安全策略的模型。

2.3389无法连接的几种情况

端口被修改

防护拦截

处于内网,需要进行端口转发

3.ARP欺骗原理

每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存到ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能。

4.ARP欺骗的防护

在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp -s 网关IP 网关MAC

在网关绑定主机MAC与IP地址

使用ARP防火墙

5.CC攻击原理

对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务器资源的目的

6.什么是同源策略

同源策略限制不同源对当前document的属性内容进行读取或设置。

不同源的区分:协议、域名、子域名、IP、端口,以上有不同时即不同源

7.TCP和UDP协议的区别

tcp面向连接;udp面向报文

tcp对系统资源的要求多;udp结构简单

tcp保证数据完整性和顺序;udp不保证

8.syn洪流的原理

伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30s到2mintue),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(cpu和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接要求,导致拒绝服务。

​​

9.多线程、对进程区别

数据方面:多进程数据是分开的,共享复杂同步简单;多线程数据是同步的,共享简单,同步复杂。 

内存方面:多进程占用内存多,利用率低;多线程占用内存少,利用率搞。

创建销毁切换方面:多进程复杂速度慢;多线程简单快。

可靠性方面:进程间不互相影响;一个线程挂掉会导致整个进程挂掉。

10.什么是中间人攻击

中间人攻击是一个(缺乏)相互认证的攻击;由于客户端和服务器之间在SSL握手的过程中缺乏相互认证而造成的漏洞。

11.防御中间人攻击的方案

公钥基础建设PKI使用PKI相互认证机制,客户端验证服务器,服务器验证客户端。如果只验证服务器,这样就会造成SSL握手环节的漏洞。

延迟测试:使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才达到对方,这就能表明存在第三方中间人。

使用其它形式的密钥交换形式。

12.描述TCP/UDP的区别及优劣,及其发展前景

TCP——传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。

TCP提供超时重发,丢弃重复数据,校验数据,流量控制等功能,保证数据能从一端传到另一端。

TCP 建立连接 完整性强 速度慢

UDP——用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。

由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

UDP 不建立连接 不可靠 速度快

13.如何判断计算机可能已经中马

计算机系统运行速度减慢

计算机系统经常无故发生死机

计算机系统中的文件长度发生变化

计算机存储的容量异常减少

系统引导速度减慢

丢失文件或文件损坏

计算机屏幕上出现异常提示

计算机系统的蜂鸣器出现异常声响

磁盘卷标发生变化

系统不识别硬盘

对存储系统异常访问

键盘输入异常

文件的日期、时间、属性发生变化

文件无法正确读取、复制、打开

命令行执行出现错误

虚假警报

换当前盘。有些病毒会将当前盘切换到C盘

时钟倒转。有些病毒会命名系统时间倒转,逆向计时

Windows操作系统无故频繁出现错误

系统异常重新启动

一些外部设备工作异常

异常要求用户输入密码

Word或Excel提示执行"宏"

14.木马的传播途径主要有哪些

木马主要是依靠右键、下载等途径进行传播。

木马也可以通过各种脚本进行传播:比如,IE浏览器在执行脚本时存在一些漏洞,入侵者可以通过这些漏洞进行木马的传播与种植。当目标主机执行木马的服务端程序后,入侵者便可以通过客户端程序与目标主机上的服务端建立连接,接入控制目标主机。

对于通信协议的选择,绝大多数木马使用的是TCP/IP协议,但也有使用UDP协议的木马。所以做好木马的检测工作可以及时的发现以及处理木马,降低木马所带来的损失。

15.恶意软件的定义

恶意软件:把未经授权便干扰或破坏计算机系统/网络功能的程序或代码称之为恶意程序

一组指令:可能是二进制文件,也可能是脚本语言/宏语言等。

16.什么是网页挂马

网页挂马就是攻击者通过在正常的页面中(通常是网站的主页)插入一段代码。浏览者在打开该页面的时候,这段代码被执行,然后下载并运行某木马的服务器端程序,进而控制浏览者的主机。
挂网马的目的,让访问该网页的主机下载某木马的服务器端程序,进而控制浏览者的主机。

17.网页挂马都有什么类型

1)框架嵌入式网络挂马

网页木马被攻击者利用iframe语句,加载到任意网页中都可执行的挂马形式,是最早也是最有效的的一种网络挂马技术。在打开插入该句代码的网页后,就也就打开了木马页面,但是由于它的长和宽都为"0",所以非常具有隐蔽性。

2)js调用型网页挂马

js挂马是一种利用js脚本文件调用的原理,进行的网页木马隐蔽挂马技术。如黑客先制作一个. js文件,然后利用js代码调用到挂马的网页。
通常代码如下:
http://www.xxx.com/gm.js 就是一个js脚本文件,通过它调用和执行木马的服务端。这些js文件一般都可以通过工具生成,攻击者只需输入相关的选项就可以了,如图2就是一个JS木马的代码。

3)图片伪装挂马

随着防毒技术的发展,黑手段也不停地更新,图片木马技术逃避杀毒监视的新技术,攻击者将类似 http://www.xxx.com/test.htm 中的木马代码植入到test.gif图片文件中,这些嵌入代码的图片都可以用工具生成,攻击者只需输入相关的选项就可以了。图片木马生成后,再利用代码调用执行,是比较新颖的一种挂马隐蔽方法。

4)网络钓鱼挂马(也称为伪装调用挂马)

网络中最常见的欺骗手段,黑客们利用人们的猎奇、贪心等心理伪装构造一个链接或者一个网页,利用社会工程学欺骗方法引诱点击,当用户打开一个看似正常的页面时,网页代码随之运行,隐蔽性极高。
这种方式往往和欺骗用户输入某些个人隐私信息,然后窃取个人隐私相关联。比如攻击者模仿腾讯公司设计了一个获取QQ币的页面,引诱输入QQ号和密码。等用户输入完提交后,就把这些信息发送到攻击者指定的地方。

5)伪装挂马

高级欺骗,黑客利用IE或者Fixfox浏览器的设计缺陷制造的一种高级欺骗技术,当用户访问木马页面时地址栏显示 www.sina.com 或者security.ctocio.com.cn等用户信任地址,其实却打开了被挂马的页面,从而实现欺骗。

总结

上述的挂马方式都是利用了系统的漏洞,并且挂马的代码不用攻击者编写,都是实现了工具化、傻瓜化。技术门槛比较低,因此危害也特别大。

18.为什么电子邮件病毒会有危险

根据最新报告,电子邮件继续在恶意软件分发生态系统中占主导地位。恶意代码可以作为附件文件查收,也可以通过指向随机在线资源(如Google Drive)的链接进行轮询。
在病毒传播方面,SMTP流量优于其他协议。此外,病毒不一定是. exe文件,它们也可以伪装成用户通常信任的. doc或. pdf文档。

19.远程访问工具的风险是什么

除了未经批准的访问之外,还面临一个风险:文件传输。尤其令人不安的是,在这些会话过程中,大量的流量(GB级数据)来回传输移动。大多数远程访问实用程序都具有加密措施,因此无法了解正在下载或上传的内容。总的来说,它是私有数据泄漏的主要渠道。

20.ICMP协议类型简述

ICMP依赖IP协议,主要类型有8(ping请求),0(ping应答),3(目标不可达),11(ttl 超时)

21.防火墙的类别及其原理

包过滤防火墙,配置复杂功能简单,对数据包源目的地址,端口号即协议类型进行检测;应用代理防火墙,连接效率低,速度慢,每个代理都需要一个服务程序,对每个新应用必须添加针对该应用的服务程序否则不能使用。
状态检测防火墙,速度快,配置方便,功能较多,根据网络连接甚至状态特性进行检测,但对应用层检测不够深入;高级应用防火墙,能高速对应用层数据进行检测。

22.HTTP响应状态简述

1XX----提供信息;2XX----请求被成功提交;3XX----客户端被重定向;4XX----请求包含错误;5XX----服务器执行请求遇到错误
200◯K//客户端请求成功
403 Forbidden//服务器收到请求,但是拒绝提供服务
404 Not Found//请求资源不存在, eg:输入了错误的URL
500 Internal Server Error//服务器发生不可预期的错误
URI和URL的区别:URI统一资源标识符,用来唯一的标识一个资源。

23.cookie和session的区别

cookie和session都是客户端与服务器之间保持状态的解决方案。

1)存储的位置不同

cookie存放在客户端, session存放在服务端。session存储的数据比较安全

2)存储的数据类型不同

两者都是key-value的结构,但针对value的类型是有差异的:
cookie:value只能是字符串类型, session:value是Object类型

3)存储的数据大小限制不同

cookie大小受浏览器的限制,很多是4K的大小;session理论上受当前内存的限制

4)生命周期的控制

cookie的生命周期当浏览器关闭的时候,就消亡了。
cookie的生命周期是累计的,从创建时,就开始计时,20分钟后, cookie生命周期结束;
session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁。

24.ARP协议工作原理

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
1)发送ARP请求的以太网数据帧广播到以太网上的每个主机,ARP请求帧中包含了目的主机的IP地址。
2)目的主机收到了该ARP请求之后,会发送一个ARP应答,里面包含了目的主机的MAC地址。

25.GET和POST的区别

1)GET是获取数据;POST是修改数据
2)GET把请求的数据放在url上,以?分割URL和传输数据,参数之间以&相连,所以GET不太安全;而POST把数据放在HTTP的包体内(request body)
3)GET提交的数据最大是2k(限制实际上取决于浏览器);POST理论上没有限制。
4)GET产生一个TCP数据包,浏览器会把http header和data一并发送出去, 服务器响应200(返回数据);POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
5)GET请求会被浏览器主动缓存;而POST不会,除非手动设置

26.HTTPS和HTTP的区别

1)HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
2) https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
3) http和https使用的是完全不同的连接方式.用的端口也不一样,前者是80,后者是443。
参考资料: https://www.cnblogs.com/wqhwe/p/5407468.html

27.OSI的七层模型都有哪些

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
传输层:在源端与目的端之间提供可靠的透明数据传输
会话层:负责在网络中的两节点之间建立、维持和终止通信
表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
应用层:为用户的应用进程提供网络通信服务

28.http长连接和短连接的区别

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。而从HTTP/1.1起,默认使用长连接,用以保持连接特性。

29.什么是SSL,SSL是怎么工作保证安全的

SSL代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和Web 服务器之间发送的数据的协议。加密Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性的应用层协议加密和解密需要两个不同的密钥,故被称为非对称加密;加密和解密都使用同一个密钥的对称加密。
优点在于加密、解密效率通常比较高HTTPS是基于非对称加密的,公钥是公开的,
1)客户端向服务器端发起SSL连接请求;
2) 服务器把公钥发送给客户端,并且服务器端保存着唯一的私钥
3)客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
4)服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,
5)进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即是第三方获得数据包,也无法对其进行加密,解密和篡改。
因为数字签名、摘要是证书防伪非常关键的武器。“摘要”就是对传输的内容,通过hash算法计算出一段固定长度的串。然后,在通过CA的私钥对这段摘要进行加密,加密后得到的结果就是“数字签名”。
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。

30.条件竞争漏洞原理与举例

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
举个例子,很多web程序都会有上传文件的功能,头像和图像等,服务器肯定会检查文件是否满足条件,不满足的要被删除。那么问题就在于,如果我们采用大量的并发请求,就传递一个生成恶意webshell的图像,访问它就可以生成webshell。
在上传完成和安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求的方法访问了该文件,该文件就会被执行,并且在服务器上生成一个恶意shell的文件。
至此该文件的任务就已全部完成,至于后面发现它是一个不安全的文件并把它删除的问题都已经不重要了,因为攻击者已经成功地在服务器中植入了一个shell文件,后续的一切就都不是问题了。
参考链接1: https://blog.csdn.net/iamsongyu/article/details/83346260
参考链接2: https://seaii-blog.com/index.php/2017/04/26/49.html
参考链接3: https://www.cnblogs.com/0xJDchen/p/5988275.html

31.如何验证存在XSS漏洞

XSS漏洞的原理是:插入语句、改变结果、操纵数据
本质是:用户输入的html语句直接输出,包括了使用不正确的方法去验证挖掘XSS的第一步是找输入,也就是用户可以操控代码的位置;第二步是找输出,也就是找到第一步用户输入的代码在网页的何处地方进行了输出;第三步:构造payload,通过查看源代码,构建出payload。

如代码输出位置在<td>test</td>,即可构建出payload:test</td><svg/οnlοad=console. log(1)><td>, 最后输出结果为:<td>test</td><svg/οnlοad=console. log(1)><td></td>

32.如何验证存在任意文件下载的漏洞

一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
利用条件:存在读文件的函数;读取文件的路径用户可控且未校验或校验不严;输出了文件内容。
任意文件下载和任意文件读取有着相似的地方:就是都需要路径,例如index. php?f=file:///etc/passwd, index. php?f=./index. php
参考链接: https://www.cnblogs.com/zhaijiahui/p/8459661.html

33.Web短信重置密码可能存在哪几种绕过方式

1)短信验证码可爆破
2)短信验证码显示在获取验证码请求的回显甲
3)注册手机号及短信验证码未进行匹配性验证
4)用户名、手机号码、短信验证码三者没有进行匹配性验证
5)短信验证码的验证在本地客户端进行验证
6)重置步骤未进行校验
7)重置请求未验证身份
8)登录成功修改密码功能平行越权
9)未校验身份信息的唯一标识cookie信息
参考链接1: https://www.cnblogs.com/peterpan0707007/p/8721094.html
参考链接2: http://www.nxadmin.com/web/1642.html

34.XSS有哪几种类型

反射型XSS(也叫非持久型):恶意JavaScript脚本属于用户发送给网站请求中的一部分,随后网站又将这部分返回给用户,恶意脚本在页面中被执行。一般发生在前后端一体的应用中,服务端逻辑会改变最终的网页代码。

基于DOM的XSS:这种攻击不需要经过服务器,网页本身的JavaScript也是可以改变HTML的,黑客正是利用这一点来实现插入恶意脚本。

存储型XSS(也叫持久型XSS):黑客将恶意JavaScript脚本长期保存在服务端数据库中,用户一旦访问相关页面数据,恶意脚本就会被执行。常见于搜索、微博、社区贴吧评论等。

区别:反射型的XSS的恶意脚本存在URL里,存储型XSS的恶意代码存在数据库里。而基于DOM型的XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身的安全漏洞,其他两种XSS都属于服务端的安全漏洞。

35.黑客可以通过XSS攻击做哪些事

盗取用户Cookie、未授权操作、修改DOM、刷浮窗广告、发动XSS蠕虫攻击劫持用户行为,进一步渗透内网。

36.XSS攻击如何进行防护

1)将HTML元素内容、属性以及URL请求参数、CSS值进行编码
2)当编码影响业务时,使用白名单规则进行检测和过滤
3)使用W3C提出的CSP(Content Security Policy,内容安全策略),定义域名白名单
4)设置cookie的HttpOnly属性

37.什么是CSRF攻击

CSRF英文全称是Cross-site request forgery,又称为“跨站请求伪造”,就是黑客引诱用户打开黑客的网站,利用用户的登陆状态发起跨站请求。
降维解释:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

38.CSRF攻击一般怎么实现

1)最容易实现的是Get请求,一般进入黑客网站后,可以通过设置img的src属性来自动发起请求
2)在黑客的网站中,构造隐藏表单来自动发起Post请求
3)通过引诱链接诱惑用户点击触发请求,利用a标签的href

39.应该如何防范CSRF攻击

1)针对实际情况,设置关键Cookie的SameSite属性为Strict或Lax
2)服务端验证请求来源站点(Referer、Origin)
3)使用CSRF Token,服务端随机生成返回给浏览器的Token,每一次请求都会携带不同的CSRF Token

4)加入二次验证(独立的支付密码)

40.如何突破注入时字符被转义

宽字符注入、hex编码绕过

41.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用

1)先爆破用户名,再利用被爆破出来的用户名爆破密码
2)其实有些站点,在登陆处也会这样提示
3)所有和数据库有交互的地方都有可能有注入

42.CSRF、SSRF和重放攻击有什么区别

CSRF是跨站请求伪造攻击,由客户端发起;
SSRF是服务器端请求伪造,由服务器发起;
重放攻击是将截获的数据包进行重放,达到身份认证等目的。

43.SQL注入防护方法

1)使用安全的API
2)对输入的特殊字符进行Escape转义处理
3)使用白名单来规范化输入验证方法
4)对客户端输入进行控制,不允许输入SQL注入相关的特殊字符
5)服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除

44.代码执行,文件读取,命令执行的函数都有哪些

1)代码执行:

eval, preg_replace+/e, assert, call_user_func, call_user_func_array, create_function

2)文件读取:

file_get_contents( ), highlight_file( ), fopen( ), readfile( ), fread( ), fgetss( ),
fgets( ), parse_ini_file( ), show_source( ), file( )

3)命令执行:

system( ), exec( ), shell_exec( ), passthru( ), pcntl_exec( ), popen( ), proc_open( )

45.为什么参数化查询可以防止SQL注入

原理:使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行。
简单的说:参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑。

46.盲注是什么,怎么盲注

盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。
盲注的手段有两种:
一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入;一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),可以用benchmark, sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

47.宽字节注入产生原理以及根本原因

1)产生原理:

在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,由于0XBF27是两个字符,在PHP中 addslash 和 magic_quotes_gpc 开启时,会对0×27单引号进行转义,因此0×bf27会变成0×bf5c27。
而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着“吃掉”,单引号由此逃逸出来可以用来闭合语句。

2)根本原因:

character_set_client(客户端的字符集)和 character_set_connection(连接层的字符集)不同,或转换函数如, iconv 、 mb_convert_encoding 使用不当。

3)解决办法:

统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如mysql_real_escape_string+ mysql_set_charset 的使用。

48.mysql的网站注入5.0以上和5.0以下有什么区别

5.0以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表名;
5.0以下是多用户单操作,5.0以上是多用户多操作。

49.SSRF漏洞的验证方法

因为SSRF漏洞是让服务器发送请求的安全漏洞,所以就可以通过抓包分析发送的请求是否是由服务器所发送的,从而来判断是否存在SSRF漏洞;
在页面源码中查找访问的资源地址,如果该资源地址类型为
www.baidu.com/xxx.php?image=( 地址)的就可能存在SSRF漏洞。

50.SSRF漏洞的成因、防御、绕过

成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。
利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。防御:禁止跳转、限制协议,内外网限制,URL限制。
绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符.@之类的。301跳转+dns rebindding。

51.文件上传漏洞原理

由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。

52.导致文件包含的函数

PHP: include( ), include_once( ), require( ), re- quire_once( ), fopen( ), readfile( )
JSP/Servlet:ava. io. File(), java. io. Fil-eReader()
ASP:include file, include virtual

53.金融行业常见逻辑漏洞

主要是数据的篡改(涉及金融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅羊毛,交易/订单信息泄露,水平越权对别人的账户查看或恶意操作,交易或业务步骤绕过。

54.SQL注入种类

按数据的传递方式可以分为:get注入、post注入、cookie注入
根据注入点类型分类:数字型、字符型
根据执行效果分类:有回显的注入、盲注、报错注入、堆叠注入、宽字节注入

55.SQL注入能做什么

绕过登录验证,比如说使用万能密码登录网站;获取网站管理员账号密码;读取文件、写入webshell等。

56.文件上传漏洞绕过方法

前端Js绕过、黑白名单绕过、文件类型绕过(mime、文件头、文件内容)、路径截断绕过(00截断)、中间件解析漏洞、条件竞争、二次渲染、编辑器漏洞

57.文件上传防御方法

上传目录的用户执行权限全部取消、判断文件类型、使用随机数改写文件名和文件路径、网站服务器和文件服务器分离、白名单检查、限制文件大小

58.Sqlmap常用参数

-u(指定url)
-r(读取需要注入的post请求的文本)
-m(批量跑get注入)
-p(指定注入参数)
-current-db:(获取当前数据库)
--table(枚举数据库表)
--tamper(使用过waf脚本)

59.XXE漏洞原理与防御

原理:XXE(XML外部实体注入,XML External Entity),在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。
Java中的XXE支持sun.net. www.protocol 里的所有协议:http, https, file, ftp,mailto, jar, netdoc。一般利用file协议读取文件,利用http协议探测内网。
防御:配置XML处理器使用禁用DTD、禁止外部实体解析、通过黑名单过滤用户提交的XML数据。

60.任意文件下载漏洞的修复方案

1)过滤用户数据,如“/”,“*”,“.”等特殊字符
2)更新中间件
3)要下载的文件地址保存至数据库中
4)文件路径保存至数据库,让用户提交文件对应ID或session下载文件
5)用户下载文件之前需要进行权限判断
6)文件放在web无法直接访问的目录下
7)不允许提供目录遍历服务
8)公开文件可放置在web应用程序下载目录中通过链接进行下载

61.知道哪些XSS攻击案例简单说一下

2005年,年仅19岁的Samy Kamkar发起了对 MySpace.com 的XSS Worm攻击。Samy Kamkar的蠕虫在短短几小时内就感染了100万用户——它在每个用户的自我简介后边加了一句话:“but most of all, Samy is my hero.”(Samy是我的偶像)。这是Web安全史上第一个重量级的XSS Worm,具有里程碑意义。
2007年12月,百度空间收到蠕虫攻击,用户之间开始转发垃圾短消息。
QQ邮箱m.  exmail.qq.com 域名被发现反射型XSS漏洞。
2011年新浪微博曾被黑客XSS攻击,黑客诱导用户点击一个带有诱惑性的链接,便会自动发送一条带有同样诱惑性链接微博。攻击范围层层扩大,也是一种蠕虫攻击。

62.CSRF攻击和XSS攻击有什么区别

CSRF攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
CSRF攻击成本也比XSS低,用户每天都要访问大量网页,无法确认每一个网页的合法性,从用户角度来说,无法彻底防止CSRF攻击。

63.以下链接存在sql注入漏洞,对于这个变形注入,你有什么思路

demo. do?DATA=AjA×Ng==
DATA有可能经过了base64编码再传入服务器,所以我们也要对参数进行base64编码才能正确完成测试。

64.发现demo. jsp? uid=110注入点,你有哪几种思路获取webshell,哪种是优选

有写入权限的,构造联合查询语句使用using INTOOUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入WebShell使用sqlmap-os-shell原理和上面一种相同,来直接获得一个Shell,这样效率更高。
通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传Shell。

65.说出至少三种业务逻辑漏洞,以及修复方式

密码找回漏洞中存在:
1)密码允许暴力破解
2)存在通用型找回凭证
3)可以跳过验证步骤
4)找回凭证可以拦包获取
等方式来通过厂商提供的密码找回功能来得到密码。
身份认证漏洞中最常见的是:
5)会话固定攻击
6) Cookie仿冒
只要得到Session或Cookie即可伪造用户身份。
验证码漏洞中存在:
7)验证码允许暴力破解
8)验证码可以通过Javascript或者改包的方法来进行绕过

66.sqlmap怎么对一个注入点注入

1)如果是get型号,直接, sqlmap-u“注入点网址"
2)如果是post型注入点,可以sqlmap-u“注入点网址"
−data=“post
的参数"
3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包, 注入处用号替换,放到文件里,然后sqlmap-r“文件地址"

67.延时注入如何来判断

if(ascii(substr("hello",1,1))=104, sleep(5),1)

68.owasp漏洞都有哪些

1)SQL注入防护方法
2)失效的身份认证和会话管理
3)跨站脚本攻击XSS
4)直接引用不安全的对象
5)安全配置错误
6)敏感信息泄露
7)缺少功能级的访问控制
8)跨站请求伪造CSRF
9)使用含有已知漏洞的组件
10)未验证的重定向和转发

69.DOM型和XSS自动化测试或人工测试

人工测试思路:找到类似document. write、innerHTML赋值、outterHTML赋值、window. location操作、写javascript:后内容、eval、setTimeout、setInterval等直接执行之类的函数点。
找到其变量,回溯变量来源观察是否可控,是否经过安全函数。自动化测试参看道哥的博客,思路是从输入入手,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有一个javascript解析器,否则会漏掉一些通过js执行带入的部分内容。

70.对于XSS怎么修补建议

输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。
输出点检查:对变量输出到HTML页面中时,对输出内容进行编码转义,输出在HTML中时,对其进行HTMLEncode,如果输出在Javascript脚本中时,对其进行JavascriptEncode。对使用JavascriptEncode的变量都放在引号中并转义危险字符, data部分就无法逃逸出引号外成为code的一部分。还可以使用更加严格的方法,对所有数字字母之外的字符都使用十六进制编码。此外,要注意在浏览器中,HTML的解析会优先于Javascript的解析,编码的方式也需要考虑清楚。除此之外,还有做HTTPOnly对Cookie劫持做限制。

71.CSRF的防御

验证Referer、添加token

72.token和referer做横向对比,谁安全等级高

token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS 跳到HTTP,也不会发送referer。并且FLASH一些版本中可以自定义referer。但是token的话,要保证其足够随机且不可泄露。

73.对referer的验证,从什么角度去做?如果做,怎么杜绝问题

对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。

74.针对token攻击,你会对token的哪方面进行测试

针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结合着发起组合攻击。信息泄露有可能是缓存、日志、get,也有可能是利用跨站。很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了。
另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的。

75.简述你知道的一句话木马

ASP:<%eval request("cmd")%>
ASP.NET:(aspx)
<%@Page Language="Jscript"%>
<%eval(Request. ltem["cmd"],“unsafe”);%>
PHP:<?php@eval($_REQUEST['cmd']):?>

76.简述PHP代码注入和命令注入的成因和危害

PHP中 eval 、 assert 、 call_user_func 等函数会将字符串当作PHP代码执行,且没有对参数进行过滤。应用在调用system等函数时会将字符串拼接到命令行中,且没有过滤用户输入。
PHP注入会使攻击者执行任意代码getshell从而控制网站或服务器。系统注入会使攻击者继承web服务器程序权限执行系统命令、读写文件、反弹shell从而控制整个网站甚至服务器。

猜你喜欢

转载自blog.csdn.net/m0_63127854/article/details/128183719