2019年信息安全工程师案例分析真题与答案试题五

2019年信息安全工程师案例分析真题与答案试题五(共17分)

阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】

信息系统安全开发生命周期(Security Development Life Cycle(SDLC))是微软提出的从安全角度指导软件开发过程的管理模式,它将安全纳入信息系统开发生命周期的所有阶段,各阶段的安全措施与步骤如下图5.1所示。

【问题1】(4分)在培训阶段,需要对员工进行安全意识培训,要求员工向弱口令说不!针对弱口令最有效的攻击方式是什么?以下口令中,密码强度最高的是( )。

A、security2019 B、2019Security

C、Security@2019 D、Security2019

参考答案穷举攻击。C。

【问题2】(6分)在大数据时代,个人数据正被动地被企业搜集并利用。在需求分析阶段,需要考虑采用隐私保护技术防止隐私泄露。从数据挖掘的角度,隐私保护技术主要有:基于数据失真的隐私保护技术、基于数据加密的隐私保护技术、基于数据匿名隐私保护技术。

请问以下隐私保护技术分别属于上述三种隐私保护技术的哪一种?

(1)随机化过程修改敏感数据

(2)基于泛化的隐私保护技术

(3)安全多方计算隐私保护技术

参考答案(1)基于数据失真的隐私保护技术(2)基于数据匿名的隐私保护技术(3)基于数据加密的隐私保护技术

【问题3】(4分)有下述口令验证代码:

#define PASSWORD "1234567"
int verify_ password (char *password)
{
int authenticated;
char buffer[8];
authenticated= strcmp(password,PASSWORD);
strcpy(buffer,password);
return authenticated;
}
іnt mаіn(іnt аrgс, сhаr* аrgv[ ]) 
{
int valid_ flag=0;
char password[1024];
while(1)
{
printf("please input password: ");
scanf("%s",password);
valid_ flag = verify_ password(password); //验证口令
if ( valid_ flag)//口令无效
{
printf("incorrect password!\n\n");
}
else //口令有效
{
printf("Congratulation! You have passed the verification!\n");
break;


}

其中main函数在调用verify_ password函数进行口令验证时,堆栈的布局如图5.2所示。

请问调用verify_password函数的参数满足什么条件,就可以在不知道真实口令的情况下绕过口令验证功能?

参考答案参数password的值满足:12个字符的字符串,前面8个字符为任意字符,后面4个字符为空字符。

参考解析:首先,分析代码可知,要绕过口令验证,需要使得authenticated值为0。authenticated结果是通过strcmp判断两个字符相等得到的,了解下这个函数:

strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

也就是说,正常情况下authenticated为0一定表示两个字符串相等。但是我们观察堆栈可知,buff占用8个字节,紧后authenticated占用4个字节(int类型)。结合程序通过strcpy将password写入buff可知,我们可以利用strcpy执行时缓冲区溢出,将后续地址的值也改为0,而空字符对应的ASCII码为0,因此,可以输入12个字符,前面8个字符为任意字符,后面4个字符为空字符,后面4个字符是为了让authenticated的值为0。

【问题4】(3分)SDLC安全开发模型的实现阶段给出了3种可以采取的安全措施,请结合问题3的代码举例说明?

参考答案(1)使用批准工具(安全编译工具)。(2)禁用不安全函数(禁用C语言中有隐患的函数,例如代码中的strcpy,scanf)。(3)静态分析工具(如检测程序指针的完整性)。

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花