在客户服务器通信模型中,客户端需要每隔一定时间向服务器发送数据包,以确定服务器是否掉线,服务器也能以此判断客户端是否存活,这种每隔固定时间发一次的数据包也称为心跳包。心跳包的内容没有什么特别的规定,一般都是很小的包。
某系统采用的请求和应答两种类型的心跳包格式如图4-1所示。
图4-1 协议包格式
心跳包类型占1个字节,主要是请求和响应两种类型;
心跳包数据长度字段占2个字节,表示后续数据或者负载的长度。
接收端收到该心跳包后的处理函数是process_heartbeat(),其中参数p指向心跳包的报文数据,s是对应客户端的socket网络通信套接字。
void process_heartbeat(unsigned char *p, SOCKET s)
{
unsigned short hbtype;
unsigned int payload;
hbtype=*p++; //心跳包类型
n2s(p, payload); //心跳包数据长度
pl=p; //pl指向心跳包数据
if(hbtype=HB_REQUEST){
unsigned char *buffer, *bp;
buffer=malloc(1+2+payload);
*bp++=HB_RESPONSE; //填充1 byte的心跳包类型
s2n(payload, bp); //填充2 bytes的数据长度
memcpy(bp,pl,payload);
/*将构造好的心跳响应包通过socket s返回客户端 */
r=write_bytes(s, buffer,3+payload);
}
}
【问题1】(4分)
(1)心跳包数据长度字段的最大取值是多少?
(2)心跳包中的数据长度字段给出的长度值是否必须和后续的数据字段的实际长度一致?
【问题2】(5分)
(1)上述接收代码存在什么样的安全漏洞?
(2)该漏洞的危害是什么?
【问题3】(2分)
模糊测试(Fuzzing)是一种非常重要的信息系统安全测评方法,它是一种基于缺陷注入的自动化测试技术。请问模糊测试属于黑盒测试还是白盒测试?其测试结果是否存在误报?
【问题4】(4分)
模糊测试技术能否测试出上述代码存在的安全漏洞?为什么?
【问题1】
(1)心跳包数据长度的最大取值为65535。
(2)必须是一致的。
【问题2】
存在溢出安全漏洞。
接收端处理代码在组装响应包时,心跳包数据长度字段(payload)采用的是客户端
发送的请求包中使用的长度字段,由于心跳包数据长度字段完全由客户端控制,当
payload大于实际心跳包数据的长度时,将导致越界访问接收端内存,从而泄露内存信
息。(2分)
造成的危害:在正常的情况下,response 报文中的data就是request报文中的data
数据,但是在异常情况下,payload 的长度远大于实际数据的长度,这样就会发生内存的
越界访问,但这种越界访问并不会直接导致程序异常,(因为这里直接memcpy后,服务
器端并没有使用copy后的数据,而只是简单的进行了回复报文的填充,如果服务端使用
了copy的数据也许就可能发现问题)这里使用了memcpy函数,该函数会直接根据长度
把内存中数据复制给另一个变量。这样就给恶意的程序留下了后门,当恶意程序给data
的长度变量赋值为65535时,就可以把内存中64KB的内存数据通过Response报文发送
给客户端,这样客户端程序就可以获取到一些敏感数据泄露。
【问题3】
属于黑盒测试;不存在误报。
【问题4】
不能。
因为不会产生异常,模糊测试器就无法监视到异常,从而无法检测到该漏洞。
一台主机的IP地址为202.123.25.36,掩码为255.255.254.0。如果该主机需要在该网络进行直接广播,那么它应该使用的目的地址为( )
在计算机系统的日常维护工作中,应当注意硬盘工作时不能__(2)__。另外,需要防范病毒,而__(3)__是不会被病毒感觉的。
有 4 个 IP 地址:201.117.15.254、201.117.17.01、201.117.24.5 和 201.117.29.3,如果子网掩码为 255.255.248.0,则这 4 个地址分别属于3个子网;其中属于同一个子网的是()
在异步通信中,每个字符包含1位起始位、7位数据位、1位奇偶位和1位终止位,每秒钟传送200个字符,采用4相位调制,则码元速率为()。
在 Windows 中,运行( )命令得到下图所示结果。以下关于该结果的叙述中,错误的是( )。
Pinging 59.74.111.8 with 32 bytes of data:
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Ping statistics for 59.74.111.8:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 5ms, Average = 4ms
在ISO OSF/RM参考模型中,七层协议中的__(1)__利用通信子网提供的服务实现两个用户进程之间端到端的通信。在这个模型中,如果A用户需要通过网络向B用户传送数据,则首先将数据送入应用层,在该层给它附加控制信息后送入表示层;在表示层对数据进行必要的变换并加头标后送入会话层;在会话层加头标送入传输层;在传输层将数据分解为__(本题)__后送至网络层;在网络层将数据封装成__(3)__后送至数据链路层;在数据链路层将数据加上头标和尾标封装成__(4)__后发送到物理层;在物理层数据以__(5)__形式发送到物理线路。B用户所在的系统接收到数据后,层层剥去控制信息,把原数据传送给B用户。
在OSI/RM中,解释应用数据语义的协议层是()。
在TCP/IP协议栈中,ARP协议的作用是(),RARP协议的作用是(请作答此空)。
在地址 http://www.dailynews.com.cn/channel/welcome.htm 中,www.dailynews.com.cn 表示( ),welcome.htm 表示(请作答此空)。
在电子表格软件Excel中,假设A1单元格的值为15,若在A2单元格输入“=AND(15<A1,A1<100)”,则A2单元格显示的值为 ()