腾讯综合笔试题
功能测试与性能测试,安全测试有一个专门的称谓:渗透测试,听起来就像
我们正在一个看不见的战场上向敌方阵地渗透进去一样,无形中就增添了一
份神秘感。
不过说到底,渗透测试还是某种形式的测试而已。一般的测试是看软件
或系统是否实现了既定的功能,它运行起来是否与预期的一致,它跑得够不
够快。在具体做的时候,一般都有专业的软件来做这些事情:输入一些数据,
看输出来是否是正常行为所预期的数据。渗透测试呢,却是看你的软件或系
统在完成正常的功能之外,还能不能做一些理应不被允许的事情。具体做的
时候,也是输入一些数据,但看输出来是否是异常行为所预期的数据。
举个例子来说,QQ 的自定义表情包功能,普通的测试会准备一堆这些
表情包,打开自定义表情的菜单,调出一个对话框,然后选择一个表情包,
按下导入按钮,再在聊天窗口中使用刚才导入的表情包中的一个表情。在这
个过程中,测试员只需验证表情包是否导入成功、导入进去的表情包内容与
源包是否一致,最后能否在聊天中正常使用。而渗透测试呢,基本上也是这
样的过程,但是关注点有些差异。在这个例子里,我们关心这个操作的发起
权是否完全掌握在正常用户手里(例如:是否可以通过网页调用的方式发起
这个操作,就像弹出一个“与我交谈”的临时对话框一样);在与操作系统交互
时,是否能够逾越既定的限制(比如说,释放这个表情包的时候,它能不能
够跳出用户所指定的保存目录);在解析非正常的数据文件时,程序会不会
崩溃;诸如此类。测试的时候呢,也是有一定的方法依循的,比如说路径操
作,一般就是在路径名中加入..\(或者是../);文件解析呢,就是拿一些非正常
的文件让它去读取----在这里,非正常的意思是很直观的,就是除了正常格式
以外的所有文件,比如说新建一个txt,在里面胡乱输入一段文字,保存后把
后缀名改为.eip,就形成了一个“非正常的”表情包文件。
一般来说,软件或者应用的正常行为都是一个很小的集合,我们通过有
限的用例就能够遍历所有的可能性从而验证它是否实现了预期的功能。这样
很容易就能想到,软件的非正常行为则可能是一个巨大的充满了未知数的集
合,要进行测试则是非常困难的:首先,我们要测试和验证什么,这是不甚
明确的;其次,即使是验证一个可能的问题,需要的测试用例可能是数量巨
大的。想一下表情包的例子:一个测试员要证明它能正常解析,他只需准备
数百个不同大小不同内容的正常表情包,全部跑一遍,如果每一个都正确导
入了,他就可以声明这个功能是正常的,它通过了测试。相反,一个安全测
试员如果要想验证,在非正常的文件格式下,这个程序会崩溃,那么他就得
准备几乎是天文数字的表情包,用一台专门的机器连续跑上几天几夜(是的,
我们客户端测试小组就是这样做的),看它会不会死掉。想想看,即使只用4
个字节,就能构造出43 亿个不同内容的文件,要想找出那些会使程序死掉的
文件格式,无异于海里寻针。一般在实际操作的时候,也只是选取一些特定
的排列格式(比如说全0 或者全是0xff 或者0 与0xff 相间)。
这样的测试我们有时候也叫做Fuzz。文件格式的Fuzz 只是一个方面,
网络协议的Fuzz 是另一个方面,简单地说就是动态改变一个数据包的内容,
看接收方的程序会不会死掉或者崩溃。可以想象,这并不比文件格式Fuzz
好做多少。在业界,关于Fuzz 已经有不少参考资料,也有各种各样的Fuzz
工具,我们的工作,也就是参考这些已有的资料,以及各样的工具平台,然
后自己摸索来发现问题的,负责这一块的,也都是06、07 年毕业的学生。由
此可见,做安全研究,其实也没有太大的门槛的。只不过在学校里太闭塞,
又没有好的指引,所以觉得渺茫而已。大家有兴趣的,可以下载这些工具来
试着玩玩----找个流行的IM 工具(不独是QQ,MSN 啊,Yahoo 通啊),没
事的时候就让Fuzz 工具来跑跑,兴许能发现一两个0day(所谓的0day 就
是外界没有公开的漏洞),然后用来做一些有趣的事情,比如说,给一个看
着不爽的家伙发一个消息,他的IM 就立马崩溃……
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] 下一页