面试总结
1、sql注入的原理?
web应用程序对用户输入参数的合法性没有进行判断和过滤,而且输入的参数被会带到数据库中查询,攻击者就可以利用这一特性构造paylod,让其带入数据库进行查询,爆库等操作
2、sql注入的类型?
联合注入
报错注入
盲注
堆叠注入
二次注入
cookie注入
head头部注入
宽字节注入
3、sql注入的绕过方式?
双写绕过
大小写绕过
编码绕过
宽字节绕过
使用注释、等价函数、特殊符号绕过
4、sql注入的修复?
数据与代码分离
对用户输入的参数进行严格过滤
对特殊字符进行转义
使用预编译语句PDO
使用安全函数
检查数据类型
基于黑白名单过滤
5、tcp三次握手过程?
客户端发送SYN数据包(seq=j),请求建立连接
服务端收到SYN数据包后,给客户端发送ACK(j+1)确认包,再发送一个SYN(seq=k)
客户端收到服务器的ACK+SYN包后,回服务器一个ACK确认包,发送完成后,完成三次握手,建立成功
6、还知道什么漏洞?
1、xss漏洞
1、原理:
跨站脚本攻击,攻击者在html页面中插入一些恶意的script代码,当用户访问该页面时,嵌入到页面中的script代码就会执行,达到恶意攻击用户的目的
2、分类:
反射型:
攻击者通过电子邮件等方式将包含xss代码的恶意链接发给目标,当目标用户访问该链接时,服务器接受该用户的请求并进行处理。然后服务器把带有xss代码的数据发送给目标用户的浏览器,浏览器解析这段带有xss代码的恶意脚本后就会触发xss攻击,完成攻击者想要的功能(获取cookie,url,浏览器信息,ip等)
存储型:
多见于论坛,博客和留言板
攻击者在发帖子的过程中,将恶意脚本连同正常信息一起注入帖子中,然后帖子被服务器存储下来,同时也就将恶意脚本也永久性的存放在服务器的后端存储器中,当其他用户浏览到这个被注入恶意脚本帖子时。恶意脚本就会在他们的浏览器中的到执行
dom型:
用户访问一个由攻击者专门设计的url,且这里面包含了xss代码,服务器的响应不会以任何形式包含攻击者的脚本,当用户的浏览器处理这个响应时,dom对象就会处理xss代码
3、绕过方式:
对输入的数据进行过滤
对输出到页面的数据进行相应的编码
2、csrf漏洞
1、原理:
跨站点请求伪造,在受害者不知情的情况下,以受害者的名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作
2、过程:
用户打开某网站A并成功登录时回产生cookie信息返回给浏览器,此时在打开有csrf攻击的网站B,此时网站B就会发起攻击,请求访问网站A,浏览器在收到请求时,会携带用户的cookie信息以用户的权限处理请求
3、修复:
验证http referer字段
在请求地址中添加token并验证
在http头中自定义属性并验证
3、ssrf漏洞
1、原理:
服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制
例如:
黑客操作服务端从指定的url地址获取网页文本内容,加载指定的图片等,利用的就是服务点的请求伪造
2、检测:
在有参数交互的地方直接重定向
3、修复:
过滤返回信息
统一错误信息
限制请求的端口为http常用的端口
黑名单内网ip
禁用不需要的协议
4、文件上传漏洞
1、原理:
2、绕过方法:
文件名大小写绕过
名单列表绕过
特殊文件名绕过
htaccess文件
配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测
写入方法
00截断绕过
5、xxe漏洞
1、原理:
xml外部实体注入
如果徐通允许攻击者利用xml调用外部实体,那么攻击者就可以在调用外部实体时构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害
6、反序列化漏洞
1、原理:
序列化:把对象转化为字节流或者某一数据格式进行传输的过程
反序列化:把这些数据还原为对象
反序列化漏洞:如果应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行
所以这个问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。
2、修复:设置JAVA类型的白名单
7、代码执行漏洞
1、原理:
应用程序在调用一些能够将字符串转换为代码的函数时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。
一般很难通过黑盒查找漏洞,大部分都是根据源代码判断代码执行漏洞。
8、命令执行漏洞
1、原理:
程序需要调用执行系统命令的函数的时候(如system(),exc(),eval(),shell_exc()),未对用户输入的参数进行过滤,用户能控制这些参数,从而造成了命令执行漏洞
包含漏洞
原理:
程序员为了防止代码重率过高,为了更方便自己设计架构时,使用了一些函数(如include(),include_once(),ava.io.file(),require(),require_once(),include file),这些函数引进的文件都会被解析乘代码执行
2、检测:
在url里寻找有没有被引用的脚本程序
3、修复:
使用这些函数的时候,直接写死引用变量
7、复现过哪些漏洞?
永恒之蓝、
8、sqlmap后面加shell脚本是用那个参数?
9、nmap可以扫出系统漏洞么?
可以:nmap --script=vuln ip
加上–script=vuln 就可以扫出系统漏洞了
10、用过哪些工具?
burpsuit、菜刀、
11、应急响应步骤?
1.利用相关工具查找是否留后门,取证等
2.初步判断事件类型,事件受害严重度等级
3.抑制范围让受害面不能扩大
4.查找原因,堵住硕源
5.业务恢复正常水平
6.最后总结 报告 修复 监控
12、rip和ospf区别,优缺点
适用范围不同
RIP适用于bai中小网络
OSPF适用于较大规模网络
运行
RIP运行时,首先向外发送请求报文,其他运行RIP的路由器收到请求后,马上把自己的路由表发送过去,在没收到请求时,会将路由删除,并广播自己新的路由表。
OSPF要求每个路由器周期性的发送链路状态信息,使得区域内所有路由器最终都能形成一个跟踪网络链路状态的链路状态数据库。利用链路状态数据库,每一个路由器都可以以自己为“根”,建立一个最短路径优先树,用来描述以自己出发,到达每个目的网络所需的开销。
使用情况不同
OSPF占用的实际链路带宽比RIP少;
OSPF使用的CPU时间比RIP少;
OSPF适用的内存比RIP大;
RIP在网络上达到平衡用的时间比OSPF多
优缺点:
rip最大跳数只有15跳,达到16跳就为不可达
rip不支持可变长子网掩码
ospf支持可变长子网掩码
13、路由和交换机的功能
路由功能
实现网络互连
进行数据处理
网络管理
路由器提供包括配置管理、性能管理、容错管理和流量控制等功能。
交换机功能
在局域网中连接各个计算机
14、解决环路的方法:
定义最大跳数
水平分割
路由毒化毒性逆转
抑制计时器
触发更新
15、OSPF邻居的7种关系
失效状态down
初始化状态int
双向状态2way
预启动状态exstart
交换状态exchange
加载状态loading
完成邻居状态full
16、nat
使得一个私有网络可以通过internet连接互联网,通过nat将私有地址转化为公有地址,使其可以联网
17、lamp
linux+apach+mysql+php
18、自我介绍
19、一个客户访问网页时的流程
在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html 文本并显示内容;
20、常见的状态码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
21、dns工作过程
当一个用户在地址栏输入www.taobao.com时,DNS解析有大致十个过程,如下:
-
浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。
-
如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。
但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts 文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。
-
如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
-
如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析
-
根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址
-
此时LDNS再发送请求给上一步返回的gTLD
-
接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器
-
Name Server根据映射关系表找到目标ip,返回给LDNS
-
LDNS缓存这个域名和对应的ip
-
LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
一、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
二、本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
22、http请求方法
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。