一. 常见软件安全性缺陷和漏洞
1.SQL注入(需要具备一定数据库能力)
SQL注入攻击是通过将恶意的SQL查询或添加语句插入到应用的输入参数中,根据后台返回的提示信息来判断sql注入点、数据库表信息、字符串长度......这样可以一步步获取更加精确地信息,比如账户用户密码
SQL注入带来的威胁主要有如下几点:
■猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
■绕过认证,列如绕过验证登录网站后台。
■注入可以借助数据库的存储过程进行提权等操作。
实际测试过程中,可以注入简单sql来查看返回提示,判断程序是否做了相关安全措施
2.数据篡改(常用CE或者Fiddler)
网站中或者程序中一些数据,比如商品价格,是否可通过抓包工具捕捉,是否可以断点修改参数,从而达到修改价格购买的情况
3.加密算法(在数据库遭受入侵并让黑客得知你的账户密码密文时)
常用的加密技术:1.base64 2.md5 3.scrypt
MD5是不可逆的加密方法,是无法解密的,不过网上提供了一个应用程序(解密器),通过穷举法来解密:
穷举法:将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃
比如找出1到100之间的素数,需要将1到100之间的所有整数进行判断
账号密码存在于数据库中一般会通过各种加密手段加密,但是一些简单的密码 如123456、123qwe之类任然很容易通过网上一些md5解密器破解,从而得知你的账户密码
所以,测试在对于这类问题时,应该要有安全意识,要留意密码的设计规则是否合理,可以从库里抽取一组密码来校验。
4.缓冲区溢出
原理
缓冲区是一块连续的计算机内存区域,可保存相同数据类型的多个实例。缓冲区可以是堆栈(自动变量)、堆(动态内存)和静态数据区(全局或静态)溢出指数据被添加到分配给该缓冲区的内存块之外。缓冲区溢出是最常见的程序缺陷。栈帧结构的引入为高级语言中实现函数或过程调用提供直接的硬件支持,但由于将函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来隐患。若将函数返回地址修改为指向一段精心安排的恶意代码,则可达到危害系统安全的目的。此外,堆栈的正确恢复依赖于压栈的EBP值的正确性,但EBP域邻近局部变量,若编程中有意无意地通过局部变量的地址偏移窜改EBP值,则程序的行为将变得非常危险。
网友评论