2019绿盟渗透测试笔试题

2019届秋招

笔试分为选择题和问答题,问答题如下:

一、加密分类、优缺点

1、常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。

2、对称加密:指加密和解密使用相同密钥的加密算法。常见的对称加密算法:DES、3DES、RC4、RC5、RC6和AES

优缺点:密钥较短,加密处理简单,加解密速度快。

适用于加密大量数据的场合。

3、非对称加密: 指加密和解密使用不同密钥的加密算法,也称为公私钥加密。常见的非对称加密算法:RSA、ECC

优缺点:密钥尺寸大,加解密速度慢。一般用来加密少量数据,比如DES的密钥。

一般用来加密少量数据,比如DES的密钥。

4、Hash算法:Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。常见的Hash算法:MD5、SHA、SHA-1

优缺点:将任意大小的数据映射到一个较小的、固定长度的唯一值。通过散列结果,无法推出任何部分的原始信息。

一般用来计算摘要,校验安装文件的完整性,存储和校验用户口令,校验重复提交的消息,作为数据库乐观锁的条件,作为数据库表分区的分区条件

 

二、渗透测试思路、流程

1 前期交互阶段

对他的网络或者服务器产生的影响有足够的了解。确定渗透测试的范围、目标以及代表客户进行测试时的特殊需求。商讨渗透测试的范围、目标、规定。

2 情报搜集阶段

通过google hacking、baidu进行搜集,whois查询域名ip,通过host命令来查询dns服务器,域名枚举,反向地址解析,DNS区域传送漏洞,服务指纹识别,nmap扫描端口服务,社会工程学。

3 威胁建模阶段

使用在情报搜集阶段所获取到的信息,来标识出目标系统上可能存在的安全漏洞与弱点。确定最为高效的攻击方法。

4 漏洞分析阶段

分析端口,使用nessus、owasp zap、sqlmap等进行漏洞扫描。对一些常见漏洞进行手工检测。

5 渗透攻击阶段

根据相应漏洞在漏洞库中寻找相应利用方式。传递载荷,启动运行。获取目标访问权限。在目标建立堡垒,远程控制和植入。

6 后渗透攻击阶段

以特定的业务系统作为目标,识别出关键的基础设施,并寻找目标最具价值和尝试进行安全保护的信息和资产,当你从一个系统攻入另一个系统时,你需要演示出能够对目标造成最重要业务影响的攻击途径。

7 报告阶段

使用报告文档来交流在渗透测试过程中做了哪些,如何做的,以及最为重要的----如何修复所发现的安全漏洞和弱点。

 

三、sql注入机制 诸如效果分类 以及修复方法

注入机制:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

分类:

1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。

2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行来判断。

3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

4、联合查询注入,可以使用union的情况下的注入。

5、堆查询注入,可以同时执行多条语句的执行时的注入。

修复方法:

1、检查变量数据类型和格式。只要是有固定格式的变量,在SQL语句执行前,应该严格按照固定格式去检查,确保变量是我们预想的格式。

2、过滤特殊符号,addslashes函数过滤转义

3、绑定变量,使用预编译语句

 

四、dll注入常见方法和过程

方法:

1、利用 CreateRemoteThread 2、采用CreateProcess

3、利用注册表 4、利用Windows Hooks 

5、利用特洛伊DLL 6、无DLL注入

7、利用DLL劫持内存补丁技术 8、利用未公开函数InitializeLpkHooks

9、利用输入法注入 10、利用NtResumeThread 实现全局挂钩

过程:

注入Dll:

1,OpenProcess获得要注入进程的句柄

2,VirtualAllocEx在远程进程中开辟出一段内存,长度为strlen(dllname)+1;

3,WriteProcessMemory将Dll的名字写入第二步开辟出的内存中。

4,CreateRemoteThread将LoadLibraryA作为线程函数,参数为Dll的名称,创建新线程

5,CloseHandle关闭线程句柄

卸载Dll:

1,CreateRemoteThread将GetModuleHandle注入到远程进程中,参数为被注入的Dll名

2,GetExitCodeThread将线程退出的退出码作为Dll模块的句柄值。

3,CloseHandle关闭线程句柄

3,CreateRemoteThread将FreeLibraryA注入到远程进程中,参数为第二步获得的句柄值。

4,WaitForSingleObject等待对象句柄返回

5,CloseHandle关闭线程及进程句柄。

 

 

  • 7
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值