阅读下列说明和代码,回答问题1和问题2,将解答写在答题纸的对应栏内。 ?【说明】 ?某本地口令验证函数(C语言环境,X86 32指令集)包含如下关键代码;某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数 组userPassword中,如果两个数组中的内容相同则允许进入系统。 【问题1】(4分) 用户在调用gets()函数时输入什么样式的字符串,可以在不知道的原始口令“Secret”的情况下绕过该口令验证函数的限制? 【问题2】(4分) 上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路

阅读下列说明和代码,回答问题1和问题2,将解答写在答题纸的对应栏内。 ?【说明】 ?某本地口令验证函数(C语言环境,X86 32指令集)包含如下关键代码;某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数 组userPassword中,如果两个数组中的内容相同则允许进入系统。



【问题1】(4分) 用户在调用gets()函数时输入什么样式的字符串,可以在不知道的原始口令“Secret”的情况下绕过该口令验证函数的限制? 【问题2】(4分) 上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路


参考解析

解析:【问题1】gets(userPassword); 只要输入长度为超过12个字符,会出现缓冲区溢出的问题,导致函数不能正常工作。?因此只要前12个字符和后12个字符一致,则在比较的时候,因为后12个字符覆盖了origpassword,因此会绕过验证。
【问题2】gets()函数必须保证输入长度不会超过缓冲区,一旦输入大于12个字符的口令就会造成缓冲区溢出。解决方案:改进gets()函数的安全性,或者对用户输入进行检查和校对,可通过if条件语句判断用户输入是否越界。

相关考题:

(1l)假设用户名和口令存储在自由表“口令表”中,当用户输入用户名和口令并单击“登录”按钮时,若用户名输入错误,则提示。“用户名错误”;若用户名输入正确,而口令输入错误,则提示“口令错误”。若命令按钮“登录”的Click事件中的代码如下:USE 口令表GO TOPFlag=0DO WHILE.not.EOFIF Alltrim(用户名)= =Alltrim(Thisfrom.Text1.Value)IF Alltrim(口令)= =Alltrim(Thisfrom.Text2.Value)WAIT"欢迎使用" WINDOW TIMEOUT2ELSEWAIT"口令错误" WINDOW TIMEOUT2ENDIFFlag=1EXITENDIFSKIPENDDOIF ________WAIT"用户名错误"WINDOW TIMEOUT2ENDIF则在横线处应填写的代码是A)flag=-1 B)flag=0 C) flag=1 D)flag=2

阅读以下说明回答问题1-4。[说明]某网站欲办一个论坛,试回答下列问题。创建一个名为“用户”的简表,经允许口令持续10天,在锁定账号前,只允许有三次失败的登录尝试。口令最多只能被使用1年,但在1年内的使用次数不限。

假设用户名和口令存储在自由表“口令表”中,当用户输入用户名和口令并单击“登录”按钮时,若用户名输入错误,则提示“用户名错误”;若用户名输入正确,而口令输入错误,则提示“口令错误”。若命令按钮“登录”的Click事件中的代码如下: USE 口令表 GO TOP flag=0 DO WHILE.not.EOF() IF Alltrim(用户名)=Alltrim(Thisform.Text1.Value) IF Alltrim(口令)=Alltrim(Thisform.Text2.Value) WAIT“欢迎使用”WINDOW TIMEOUT2 ELSE WAIT“口令错误”WINDOW TIMEOUT2 ENDIF flag=1 EXIT ENDIF SKIP ENDDO IF ______ WAIT“用户名错误”WINDOW TIMEOUT2 ENDIF 则在横线处应填写的代码是A.flag=-1B.flag=0C.flag=1D.flag=2

阅读下面的说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。[说明]阅读以下说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。windows Server 2003是一个多任务多用户的操作系统,能够以集中或分布的方式实现各种应用服务器角色,是目前应用比较广的操作系统之一。Windows内置许多应用服务功能,将下表中(1)~(5)处空缺的服务器名称填写在答题纸对应的解答栏内。(1)

试题四(共15 分)阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】在Windows Server 2003系统中,用户分为本地用户和域用户,本地用户的安全策略用“本地安全策略”设置,域用户的安全策略通过活动目录管理。【问题1】(2 分)在“本地安全设置”中启用了“密码必须符合复杂性要求”功能,如图 4-1 所示,则用户“ABC”可以采用的密码是 (1) 。(1)备选答案:A.ABC007 B.deE#3 C.Test123 D.adsjfs

【程序说明】假设用户名和口令存储在自由表“口令表”中,当用户输入用户名和口令并单击“登录”按钮时,若用户名输入错误,则提示“用户名错误”;若用户名输入正确,而口令输入错误,则提示“口令错误”。命令按钮“登录”的Click事件中的代码如下。【程序】USE 口令表GO TOPflag=0DO WHILE (3)IF Alltrim (用户名)= =Alltrim(Thisform. Text1. Value)IF Alltrim (口令)==Alltrim(Thisform. Text2,Value)WAIT“欢迎使用”WINDOW TTMEOUT2ELSEWATT“口令错误” WINDOW TIMEOUT2ENDIFflag=1EXITENDIFSKIFENDDOIF (4)WAIT“用户名错误”WINDOW TIMEOUT2ENPIF(3)A.BOF()B..NOT.BOF()C.EOF()D..NOT.EOF()

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明1]函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。[C函数1]void fun(char*W,char x,int*n){ int i,P;p=0;w[*n]=x;while(x>w[p]) (1) ;for(i=*n,i>p;i--)w[i]=(2);w[p]=x;++*n;}[说明2]函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。[C函数2]void revstr(char*s){ char*p,c;if(s==NULL)return;p=(3); /*p指向字符串s的最后一个有效字符*/while(s<p){ /*交换并移动指针*/C=*s;(4)=*p;(5)=c;}}

阅读下列说明和代码,回答问题1和问题2,将解答卸载答题纸的对应栏内。【说明】某一本地口令验证函数(C语言环境,X86_32指令集)包含如下关键代码:某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数组userPassword中,如果两个数组中的内容相同则允许进入系统。【问题1】用户在调用gets()函数时输入什么样式的字符串,可以在不知道原始口令“Secret”的情况下绕过该口令验证函数的限制?【问题2】上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路。

阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 函数 f(double eps) 的功能是:利用公式计算并返回 的近似值。【说明 2】 函数fun(char *str)的功能是:自左至右顺序取出非空字符串 str中的数字字符,形成一个十进制整数(最多 8 位)。例如,若 str中的字符串为 iyt?67kp f3g8d5.j4ia2e3p12, 则函数返回值为 67385423。

阅读以下关于软件测试的说明,回答司题l至问题3,将解答填入答题纸的对应栏内。【说明】使用在汽车、飞机中的嵌入式软件, 日于直接影响人的生命及财产安全,测试要求更为严格。语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖是通常对这类软件的要求。以下是一段C语言代码,请仔细阅读并回答相关问题:【问题1】(6分)请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖的含义。将答案填写在答题纸的对应栏中。【问题2】(5分)画出以上代码的流程图,将答案填写在答题纸的对应栏中。【问题3】(4分)请根据【说明】中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取值范围,将答案填写在答题纸的对应栏中.

阅读下列说明和C代码,回答问题l至问题3.将解答写在答题纸的对应栏内。【说明】计算一个整数数组a的最长递增子序列长度的方法描述如下:假设数组a的长度为n,用数组b的元素b[i]记录以a[i](0≤in)为结尾元素的最长递增子序列的长度,则数组a的最长递增子序列的长度为器;其中b[i]满足最优子结构,可递归定义为:【c代码】下面是算法的c语言实现。(1)常量和变量说明a:长度为n的整数数组,待求其最长递增子序列b:长度为n的数组,b[i]记录以a[i](0≤in)为结尾元素的最长递增子序列的长度,其中0≤inlen:最长递增子序列的长度i.j:循环变量temp,临时变量(2)C程序include stdio . hint maxL (int *b. int n) {int i. temp =0;For(i = 0; i n; i++){if (b[i] temp )Temp= b[i];}Return temp;【问题l】(8分)根据说明和C代码,填充C代码中的空(1)~(4)。【问题2】(4分)根据说明和C代码,算法采用了(5)设计策略,时间复杂度为(6)(用O符号表示)。【问题3】(3分)已知数组a={3,10,5,15,6,8},根据说明和C代码,给出数组b的元素值。

阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。【说明1】函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。【c函数】1.输入5测试上述main函数时,显示结果如下所示。input an integer:5result:-5825989092.将行号为7的代码修改为:prinff(”n=%d\nresuh:%d\n”,n,sum);并再次输入5测试main函数,显示结果如下所示。input an interger:5n=2293632result:-582598909阅读以上两个说明、c函数和问题,将解答写入答题纸的对应栏内。【问题1】请给出上述main函数中需要修改的代码行号,并给出修改后的整行代码。【说明2】函数test_f2{}编译时系统报告有错,修改后得到函数12_B{}。对函数12_B{}进行编译时顺利通过,在某些C系统中执行时却由于发生异常而不能正确结束。【c函数2】【问题2】(1)请指出函数test_f2中不能通过编译的表达式;(2)请指出可能导致函数f2_B运行异常的表达式。

阅读以下C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。【C代码1】【问题2】写出【代码2】的运行时的输出结果。

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1。KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:1.在串t和串s中,分别设比较的起始下标i=j=0。2.如果串t和串s都还有字符,则循环执行下列操作:(1)如果j=-l或者t[i]=s[j],则将i和j分别加1,继续比较t和s的下一个字符;(2)否则,将j向右滑动到next[j]的位置,即j =next[j]。3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1。其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。【C代码】(1)常量和变量说明t,s:长度为lt和ls的字符串next:next数组,长度为ls(2)C程序#include #include#include/*求next[]的值*/void get_next( int*next, char *s, int ls) { inti=0,j=-1; next[0]=-1;/*初始化next[0]*/ while(i= ls)return (4) ;else return-1;}【问题1】(8分)根据题干说明,填充C代码中的空(1)~(4).【问题2】(2分)根据题干说明和C代码,分析出kmp算法的时间复杂度为(5)(主串和子串的长度分别为It和Is,用O符号表示)。【问题3】(5分)根据C代码,字符串"BBABBCAC"的next数组元素值为(6)(直接写素值,之间用逗号隔开)。若主串为"AABBCBBABBCACCD",子串为"BBABBCAC",则函数Kmp的返回值是(7)。

阅读以下C代码,回答问题(1)~(6),将解答填入答题纸的对应栏内。【说明】函数insertElem的功能是在元素升序排列的数组中加入一个新元素并保持数组元素升序排列的特点。在main函数中输入若干表示价格的实数,输入为0或负数或实数个数超出限定数量时终止,调用insertElem将价格按升序保存在数组pdata中,最后输出所输入的实数

阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。【说明1】函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。【C函数】char *t = (char *)malloc( (1) ); /*申请串空间*/ int i, k = 0; if (!t) return; for(i = 0; i =’0’ if ( (4) ) { ch = *s; *s = *(s+len-1); *(s+len-1) = ch; reverse( (5) ); }}

阅读以下问题说明、C 程序和函数,将解答填入答题纸的对应栏内。【问题 1】分析下面的C 程序,指出错误代码(或运行异常代码)所在的行号。 【C 程序】【问题 2】函数inputArr(int a[], int n)的功能是输入一组整数(输入0或输入的整数个数达到n时结束)存入数组 a,并返回实际输入的整数个数。函数 inputArr 可以成功编译。但测试函数调用inputArr后,发现运行结果不正确。请指出错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行,使之符合上述设计意图。【C 函数】

阅读下列说明,回答问题1 和问题2,将解答填入答题纸的对应栏内。【说明】某公司用ASP+Access 数据库开发了学生管理系统,用户登录界面如图4-1 所示:【问题1】(每空1 分,共11 分)下面是该系统用户登录界面login.asp 的部分代码,其中验证码使用verycode.asp 文件生成。请根据题目说明,补充完成。(1)学生信息管理系统…省略…用户名:密码: 验证码:>…省略…【问题2】(每空2 分,共4 分)下面是登录系统中check.asp 文件的部分代码,请根据login.asp 代码将其补充完整。"&username&"用户名或密码错误,请重新输入!"else…省略…session("user_name")=request("usre_name")response. (13) "index.asp"end if…省略…%>

阅读以下说明,回答问题1至问题2,将解答填入答题纸对应的解答栏内。【说明】某留言系统采用ASP+Access开发,其后台管理登录页面如图4-1所示。【问题1】(9分)以下是该后台管理登录页面login.asp的部分代码,请仔细阅读该段代码,根据图4-1 将(1)~(9)的空缺代码补齐。【问题2】(6分)1.在登录页面 login.asp 中通过导入了bbb.asp的代码,以下是bbb.asp的部分代码,请仔细阅读该段代码,将空缺代码补齐。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某论坛的首页及留言页面如图5-1、图5-2所示。【问题1】 (6分)请根据图5-1和图5-2补充完成下面留言页面代码:在留言页面中,为保证系统运行的效率,添加了脚本程序对用户输入的留言信息进行验证,当用户输入信息不符合要求时,弹出相应窗口提示用户。补充完成下面验证部分的代码。【问题3】(4分)在论坛首页中有访客计数器,访客计数存放在系统coun文件夹的counter.txt中,请补充完成下面计数器的部分代码。空(12)~(15)备选答案:A. counter B.server C.requestD.whichfile E.readline F.visitors

阅读下列说明,回答问题1 和问题2,将解答填入答题纸的对应栏内。【说明】某公司用ASP+Access 数据库开发了学生管理系统,用户登录界面如图4-1 所示:【问题1】(每空1 分,共11 分)下面是该系统用户登录界面login.asp 的部分代码,其中验证码使用verycode.asp 文件生成。请根据题目说明,补充完成。 【问题2】(每空2 分,共4 分)下面是登录系统中check.asp 文件的部分代码,请根据login.asp 代码将其补充完整。 "&username&"用户名或密码错误,请重新输入!"else…省略…session("user_name")=request("usre_name")response. (13) "index.asp"end if…省略…%>

阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。?【说明】在公钥体制中,每一用户 U 都有自己的公开密钥 PKu 和私钥 SKu 。如果任意两个用户 A 和 B 按以下方式通信:A 发给 B 消息 [EpKB (m),A] 。其中 Ek(m)代表用密钥 K 对消息 m 进行加密。B收到以后,自动向A返回消息【EPkA(m),B】,以使A 知道B确实收到消息m。【问题 1】 (4分)用户 C 怎样通过攻击手段获取用户 A 发送给用户 B 的消息 m。【问题 2】 (6 分)若通信格式变为:A 给 B 发消息:EPKB(ESKA(m),m ,A)B 给 A 发消息: EpKA(EsKN (m),m,B)这时的安全性如何?请分析 A,B 此时是如何相互认证并传递消息的。阅读下列说明,回答问题 1 至问题 4 ,将解答写在答题纸的对 应栏内。

阅读下列说明,回答问题1至问题5, 将解答填入答题纸的对应栏内。【说明】假设用户A和用户B为了互相验证对方的身份,设计了如下通信协议:其中:是随机数,是双方事先约定并共享的口令,“||”表示连接操作,f是哈希函数。【问题1】(2分)身份认征可以通过用户知道什么,用户有什么和用户的生理特征等方法来验证。请问上述通信协议是采用哪种方法实现的?【问题2】(2分)根据身份的互相验证需求,补充协议第3 步的空白内容【问题3】(2分)通常哈希函数f需要满足下列性质:单向性,抗弱碰撞性,抗强碰撞性,如果哈希函数具备:找到任何定满足f(x)=f(y)的偶对(x,y)在计算上是不可行的,请说明满足哪条性质。【问题4】(2分)上述协议不能防止重放攻击。以下哪种改进方式能使其防止重放攻击?(1)在发送消息加上时间参量。(2)在发送消息加上随机数。【问题5】(4分)如果将哈希函数替换成对称加密函数,是否可以提高该协议的安全性?为什么?

阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。【说明】 Windows 系统的用户管理配置中,有多项安全设置,如图2-1 所示。

阅读下列说明和C++代码,回答问题,将解答填入答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic)、银卡(Silver)和金卡 (Gold) 三个等级。非会员 (NonMember) 可以申请成为普卡会员。会员的等级根据其一年内累积 的里程数进行调整。描述会员等级调整的状态图如图 5-1 所示。现采用状态 (State) 模式实现上述场景,得到如图 5-2 所示的类图。【问题1】(15分)阅读上述说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】 模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1 。 KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下: 1.在串t和串s中,分别设比较的起始下标i=j=0。 2.如果串t和串s都还有字符,则循环执行下列操作: (1)如果j=-l或者t[i]=s[j],则将i和j分别加1,继续比较t和s的下一个字符; (2)否则,将j向右滑动到next[j]的位置,即j =next[j]。 3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1. 其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。【C代码】(1)常量和变量说明 t,s:长度为悯铂Is的字符串 next:next数组,长度为Is(2)C程序#include #include #include /*求next[]的值*/void get_next( int *next, char *s, int Is) { int i=0,j=-1; next[0]=-1;/*初始化next[0]*/ while(i if(j==-1lls[i]==s[j]){/*匹配*/ j++; i++; if( s[i]==s[j]) next[i]= next[j]; else Next[i]= j; }else j = next[j]; }} int kmp( int *next, char *t ,char *s, intlt, int Is ) { Int i=0,j =0 ; while(i if(j==-1 || (2) ){ i++ ; j++ ; }else (3) ;}if (j >= ls)return (4) ;else return -1;} 【问题1】(8分) 根据题干说明,填充C代码中的空(1)~(4).【问题2】(2分)根据题干说明和C代码,分析出kmp算法的时间复杂度为(5)(主串和子串的长度分别为It和Is,用O符号表示)。【问题3】(5分)根据C代码,字符串“BBABBCAC”的next数组元素值为(6)(直接写素值,之间用逗号隔开)。若主串为“AABBCBBABBCACCD”,子串为“BBABBCAC”,则函数Kmp的返回值是(7)。

多选题安全的口令应如何设置()A口令至少应该由8个字符组成B口令应包含大小写字母C口令应包含数字特殊字符D不要使用字典中的单词E用户名和口令相同