美文网首页
安全性测试

安全性测试

作者: 小敢敢不憨a | 来源:发表于2022-04-01 14:24 被阅读0次

安全性,加密传输、重复提交、篡改参数、SQL注入

1. SQL注入的概念:

1.1 概念: SQL注入就是将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的恶意SQL命令.

1.2 SQL如何产生: 

1) WEB开发人员无法保证所有的输入都已经过滤

   2) 数据库未做相应的安全配置

    3)攻击者利用发送给SQL服务器的输入参数构造可执行的SQL代码

1.3 攻击方式: get请求、post请求、http头信息、cookie等

1.4 如何预防(开发所做):

1) 严格检查输入变量的类型和格式

   2) 过滤和转义特殊字符 

     在username这个变量前进行转义,对'、"、\等特殊字符进行转义,如:php中的addslashes()函数对username参数进行转义

   3) 利用mysql的预编译机制

1.5 攻击例子:

1)  用户登录注入:

用户输入账户跟密码之后相当于调用SQL语句进行数据库用户查询,

相当于:  SELECT * FROM user WHERE username = 'USER' ADN password = '123456'

当用户名输入改为:USER'--(单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮

等价于SQL语句:SELECT * FROM user WHERE username = 'USER'--'ADN password = '123456'

这就导致了输入一个错误的密码或者不输入密码就可登录用户名为'user'的账号,这是一个危险的操作

 2) 一个数字输入的注入:

在浏览器搜索地址栏输入:https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=hello,这是一个get型接口,发送这个请求相当于调用一个查询语句:

SELECT * FROM article WHERE id = hello

当输入数据改为: https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd= -1 OR 1 =1

那么 id = -1永远是false,1=1永远是true,所有整个where语句永远是ture,所以where条件相当于没有加where条件,那么查询的结果相当于整张表的内容.

2. SQL注入的测试点:

2.1.输入域的值为数字型,用1=1,1=2法

  若满足条件,则存在SQL注入漏洞,程序没有对提交的整型参数的合法性做过滤或判断

 2.2.输入域的值为字符型,用 ’1=1’, ’1=2’ 法

  若满足条件,则存在SQL注入漏洞,程序没有对提交的字符型参数的合法性做过滤或判断

 2.3.输入域中的值为搜索型,用’and [查询条件] and ‘%’=’% 等

  若满足条件,则存在SQL注入漏洞,程序没有对提交的查询的合法性做过滤或判断

 2.4.用UNION查询语句

  利用Union可以连接查询,从而从其他表中得到信息

 2.5.大小写排查

  程序员对大小写的过滤不充分时,会忽视大小写混合的情况,容易存在漏洞

 2.6.用UNICODE字符集检查

  用UNICODE字符集转化的输入,会把+号转为%2B,把%号转化为%25等,容易忽略过滤

 2.7.用ASCII码检查

  把输入的字符用ASCII码代替,如a=char(97),容易忽略过滤

 2.8.用;号或—号检查

  分号;在SQLServer中表示隔开前后两句语句,--表示后面的语句为注释,容易忽略过滤

 2.9.利用系统表

  通过查询数据库的系统表名,可判断具体用的数据库类型

 2.10.利用数据库服务器的系统变量user 等

  可以得到数据库名,数据库的用户名,从而进行进一步攻击

 2.11.利用相关函数

  若字符是中文的,比如where name=’用户’,可以用where name=nchar(29992)+nchar(25143)代替。

 2.12.界面输入框中是否对SQL敏感字符进行了屏蔽

  "exec" ,"xp_","sp_","declare","Union","cmd","+","//","..",";","'","--","%" 等命令关键字

 2.13.是否对SQL脚本语法出错信息进行了屏蔽

  有些SQL注入的目的就是为了看到报错的SQL命令,通过分析这些SQL命令,获取关键的数据库名,表名以及字段名等信息

 2.14.在浏览器的地址栏中是否对一些恒等表达式进行了屏蔽

  例如:https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=19 and 1=1

 2.15.对于提交表单的浏览器地址是否进行了敏感字符或命令集的屏蔽

 2.16.对于cookie参数提交部分,是否对于cookie文件进行了敏感字符或命令集的屏蔽

3. 自动化SQL注入的工具Sqlmap

  Sqlmap是一款自动化sql注入的工具,其功能强大,支持多种数据库,包括mysql,sqlserver等主流的数据库,采用独特的sql注入方法来达到自动化注入扫描漏洞的目的。

     1)基于布尔的盲注(Type:boolean-based blind),即可以根据返回页面判断条件真假的注入

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

     3)基于报错注入(Type:error-based),即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中

     4)联合查询注入(union query),可以使用union的情况下的注入

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

相关文章

  • 如何进行安全性测试

    一、软件的安全性测试 软件安全性测试包括程序、网络、数据库安全性测试。根据系统安全指标不同测试策略也不同。 ...

  • 安全测试-优秀测试工程师必备的4项安全测试方法!

    用您5分钟时间阅读完,希望能对您有帮助! 一.安全性测试 1、安全性测试方法 测试手段可以进行安全性测试,目前主要...

  • APP测试点

    .APP测试点: (1)安全测试:软件权限、安装与卸载、数据安全性、通讯安全性 (2)安装、卸载测试 (3)UI测...

  • 安全测试的考虑点及测试方法

    软件安全性测试主要包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。 用户认证安全的测试要考虑问题:...

  • 8大质量属性之基本安全性测试

    安全性测试是针对系统安全性进行的测试和验证。随着网络攻击的日益泛滥,产品的安全性变得尤为重要,很多公司都对自身产品...

  • 软件测试面试攻略

    测试思路 模块测试 功能测试 界面测试 性能测试 安全性测试 易用性测试 兼容测试 结构 功能 数据 接口 平台 ...

  • 【安全性测试】安全性测试要点

  • 2018-10-18 纸杯测试

    测试纸杯的方法 功能性 兼容测试 性能测试 安全性测试 易用性纸杯测试.png

  • 2018-04-02

    1.软件测试类型:功能测试、安全性测试、接口测试、容量测试、完整性测试、结构测试、用户界面测试、负载测试、压力测试...

  • 登录界面测试

    分类: 功能测试、界面测试、性能测试、安全性测试、可用性测试、兼容性测试、本地化测试、软件辅助测试 功能测试: 1...

网友评论

      本文标题:安全性测试

      本文链接:https://www.haomeiwen.com/subject/ihnxzltx.html