一、单项选择(判断)
1.Linux命令traceroute主要利用了IP协议中的TTL协议字段来实现。
解析:√正确。程序是利用增加存活时间(TTL)值来实现其功能的。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并发送一个ICMP TTL数据包给原数据包的发出者。
2.Linux系统中,进程只能通过系统调用由用户态切换到内核态,并且处于安全考虑,内核态有单独的进程栈空间,不复用用户态栈空间。
解析:×错误。用户态向内核态切换的三种情况:1.系统调用;2.产生异常;3.外设产生中断。
3.在Javascript中执行如下代码encodeURI("hello world!");运行结果为hello%20world%21是否正确。
解析:×错误。结果为“hello%20world!”
二、不定项选择
1.应用程序开发过程中,下面哪个是最好的安全实践。
A.使用srand函数初始化后再使用rand函数生成随机数。
B.使用C标准的系列字符串处理函数strcpy/strcat/sprintf/scanf/gets处理外部输入。
C.使用system函数执行外部输入的命令。
D.使用自定义的私有加密算法而不是标准加密算法来增强安全性。
解析:A。
C标准的系列字符串处理函数,不检查目标缓冲区的大小,容易引入缓冲区溢出的安全漏洞。
字符串拷贝函数:strcpy, wcscpy
字符串拼接函数:strcat, wcscat
字符串格式化输出函数:sprintf, swprintf, vsprintf, vswprintf,
字符串格式化输入函数:scanf, wscanf, sscanf, swscanf, fscanf, vfscanf, vscanf, vsscanf
stdin流输入函数:gets
这类函数是公认的危险函数,应禁止使用此类函数(微软从Windows Vista的开发开始就全面禁用了危险API)。
最优选择:使用ISO/IEC TR 24731-1定义的字符串操作函数的安全版本,如strcpy_s、strcat_s()、sprintf_s()、scanf_s()、gets_s() 等。
2.以下程序在64位机器下编译、执行后的输出是
#include
#include
using namespace std;
int main(){
char str[]="This is a string";
char *ptr=str;
cout<
A.This is a string; This is a string; 16 8
B.T; This is a string; 17 17
C.This is a string; T; 17 8
D.This is a string; T; 16 4
解析:C。sizeof(str),计算到“\0”位置,因此是16+1;64位系统,指针即为8个字节。
3.关于New、Malloc、Delete、Free操作描述不正确的是
A.都是在堆上进行动态内存操作的
B.Malloc在进行内存分配时需要指定字节数,并会对分配的内存进行初始化
C.New会自动调用对象的构造函数
D.Free调用时不会自动调用对象的析构函数
解析:
4.黑客使用powershell攻击绕过杀毒软件检测,以下说法错误的是
A.在系统的applocker中禁止脚本可以防御powershell攻击
B.设置powershell的Execution Policy为Restricted,不允许修改的前提下黑客无法执行powershell代码
C.Applocker可以防护流行的“挖矿”木马
D.管理员删除powershell.exe可以防御powershell攻击
5.IA64架构下,哪个寄存器是用作栈顶记录
A.RBP
B.RIP
C.RAX
D.RSP
6.TCP协议状态变迁,在established状态下主动发送FIN时,进入哪个状态
A.TIME_WAIT
B.FIN_WAIT
C.CLOSING
D.CLOSE_WAIT
解析:B
7.近段时间Memcache出现漏洞被利用发起大规模攻击,主要利用哪个协议进行攻击
A.ICMP
B.TCP
C.UDP
D.SNMP
解析:C
8.对于C++程序而言,编译成exe后可以发现,通常局部变量的初始值会放在(),而全局变量的初始值会放在()
A.堆,栈
B.栈,text区
C.堆,code区
D.栈,堆
解析:B
9.在Debian中,想要查看PID为1000的进程的内存布局,请补全命令缺失部分:cat ()/maps
A./etc/1000
B./proc/pid/1000
C./proc/1000
D./etc/pid/1000
解析:C
10.对于ARM指令 MOV R1,R0,LSL #2,已知R0的值为7,R1的值为5,R2的值为3.那么这步操作执行完以后R1的值为
A.15
B.35
C.21
D.28
11.64位程序的char*(字符串类型指针)、函数指针、int32_t*类型分别占用多少个字节的内存
A.char*类型占用最小
B.三种类型不同,所以占用内存不同
C.函数指针和int32_t*占用内存相同
D.char*占用8字节
12.全局变量BYTE X=4,线程A、B、C几乎同时依次执行①MOV EAX,X②INC EAX ③MOV X,EAX这三条指令,导致了“条件竞争”的安全问题,请写出三个线程执行完之后,所有可能值
A.4,4,5
B.5,5,5
C.4,5,6
D.5,5,6
13.以下哪个不属于防御json劫持的办法
A.Cookie鉴权
B.Referer校验
C.CSRF Token
D.以上都不属于
14.常用于网页挂马的HTML标签不包括下面哪一个
A.
B.
C.
D.
解析:D
15.访问http://aq.qq.com/cn2的过程中,HTTP的响应包HEADER中某个字段为Set-Cookie:test3=123;HttpOnly,那么下面哪个是“test3”的生效范围
A.domain: .aq.qq.com,path:/
B.domain: .qq.com,path:/
C.domain: .aq.qq.com,path:/cn2
D.domain: .qq.com,path:/cn2
解析:AC
16.避免程序出现上传文件漏洞,下列哪个是正确的处理办法
A.前端限制上传文件后缀
B.后端限制上传文件后缀
C.前端限制上传文件MIME类型
D.后端限制上传文件MIME类型
解析:AD
三、填空题
1.按照漏洞触发方式不同,XSS漏洞可以分为三类,分别是:(存储型)(反射型)(DOM型)
2.填写以下反射攻击报文的源端口:SSDP反射,源端口为:1900;Mencached反射,源端口为(11211)
3.在进行网络分析时候,可以使用(traceroute)命令来测试主机到目标主机之间经过的路由器路径
4.在常见的Linux场景中,程序员或者攻击者可以通过修改(LD_PRELOAD)环境变量的方法,劫持其他程序调用libc库函数。