前言
本文记录了我做题的一些记录。内容比较杂,包含了面试遇到的问题,ctf题目等等。
一、Http1 和Http1.1的区别是什么?
(1)缓存处理:在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略,例如Entity tag,If-Unmodified-Since,If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略
(2)带宽优化及网络连接的使用:HTTP1.0中,存在一些浪费带宽的现象,例如:客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),方便了开发者自由的选择以便于充分利用带宽和连接
(3)错误通知的管理:在HTTP1.1中新增24个状态响应码,如409(Conflict)表示请求的资源与资源当前状态冲突;410(Gone)表示服务器上的某个资源被永久性的删除
(4)Host 头处理:在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)
(5)长连接:HTTP 1.1支持持久连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,弥补了HTTP1.0每次请求都要创建连接的缺点
二、Linux 下查看进程使用的命令
PS命令是Linux系统下查看系统进程的命令.如:ps -ef
Top命令 - 实时显示Linux下的进程情况 : top
Pstree命令 -》 -a 显示完整命令及参数 -c 重复进程分别显示 -c 显示进程ID、PID -n 按 PID排列进程
Pgrep命令 -》 -l 显示进程名和进程PID -o 进程起始ID -n 进程终止ID
三、Linux修改文件所属用户及所属组命令
chown user1:group1 test.txt -->将文件test.txt的所属用户修改为user1,所属组修改为group1
四、中间件常见漏洞
IIS常见漏洞
1)6.x版本–》默认会将*.asp;.jpg 此种格式的文件名,当成Asp解析 2)6.X版本–>默认会将*.asp/目录下的所有文件当成Asp解析。
3)6.X版本–》llS6.x除了会将扩展名为.asp的文件解析为asp之外,还默认会将扩展名为.asa,.cdx,.cer解析为asp.
4)7.X版本–》在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件.
5)HTTP.SYS远程代码执行漏洞MS15-034 --》 漏洞描述:1.读取内存 2.dos攻击
验证存在漏洞:
curl -v [IP] -H "Host:irrelevant" -H "Range:bytes=0-18446744073709551615"
其实只要发送的请求包包含Range:bytes=0-18446744073709551615就可以看到是否存在整数溢出漏洞。
如果返回包中返回了状态码416 并且Requested Range Not Satisfiable表示存在漏洞。
攻击利用:采用Metasploit(MSF)进行攻击
整数溢出类漏洞原理
如同上面的MS15-034漏洞,整数溢出类漏洞类似:比如最大值为a,最小值为0 。在最大值和最小值之间如果发生以下计算:
a+1=0或者 0-1=a。
此时就称为发生了整数溢出。比如bugku里面的Easy_int题目:Easy_int题目链接中有这么一段代码
puts("Input your int:");
__isoc99_scanf("%d", &NUM);
if ( NUM < 0 )
{
NUM = -NUM;
if ( NUM < 0 )
vuln();
puts("No No No!");
}
return 0;
}
在里面可以看到需要我们输入一个数字并且程序会对数字取绝对值,但是我们需要到vuln()函数,这个情况如果我们输入一个超过int数值的值的话,就可以绕过程序的判定。比如输入2147483648在通过if(NUM<0) 的判断时会被判定为负数,在通过NUM = -NUM,变成-2147483648转而在通过第二个判定时被判定为正数。