SQL注入测试

概述

一般通过远程测试判断是否存在SQL注入( 列如,通过internet 并作为应用渗透测试的一部分 )。所以通常没有机会通过查看源代码来复查注入的查询的结构,因此常常需要进行大量的测试。

寻找SQL注入

SQL注入可以出现在任何从系统或用户接收数据输入的前端应用程序中,这些应用程序之后被用于访问数据库服务器。

在Web环境中,Web浏览器是客户端,它扮演向用户请求数据并将数据发送到远程服务器的前端角色。远程服务器使用提交的数据创建SQL查询。该阶段的主要目标是识别服务器响应中的异常并确定是否是由SQL注入漏洞产生。随后,将确定在服务器端运行的SQL查询的类型 ( 即SELECT、UPDATE、INSERT或DELETE ),以及将攻击代码注入查询中的位置 ( 比如FROM子句、WHERE子句或者ORDER BY子句等位置 )。

识别SQL注入漏洞有一种简单规则:通过发送意外数据来触发异常。
该规则的含义:

  • 识别Web应用上所有的数据输入。
  • 了解那种类型的请求会触发异常。
  • 检测服务器响应中的异常。

识别数据输入

HTTP定义了很多很多客户端可以发送给服务器的操作,但我们只需要关注与SQL注入相关的两种方法: GET和POST。

GET方法
使用该方法,信息包含在URL中。
在这里插入图片描述

POST请求
在浏览器中填写表单并单击Submit按钮时通常使用该方法。
在这里插入图片描述

在客户端用户可以控制这些数据的传递。如果浏览器禁止修改,有两种解决方法:浏览器修改扩展,代理服务器。

浏览器修改扩展是运行于浏览器上的插件,如Firefox浏览器上的Web Developer插件,和Google上的Web Developer插件。它们可以实现显示隐藏字段、清楚大小限制、将所选HTML字段转换成输入字段等任务。

在HTTP请求的其它内容也可能会触发SQL注入漏洞。例如cookie。

引发SQL注入漏洞的两个原因:

  • 缺少用户输入验证
  • 数据和控制结构混合在同一传输通道中

信息工作流
在这里插入图片描述

1. 用户向Web服务器发送请求。
2. Web服务器检索用户数据,创建包含用户输入的SQL语句,然后向数据库服务器发送查询。
3. 数据库服务器执行SQL查询并将结果返回给Web服务器。数据库服务器并不知道应用逻辑,它只是执行查询并返回结果。
4. Web服务器根据数据库响应动态的创建HTML页面。

Web服务器和数据库服务器是相互独立的实体。Web服务器只负责创建SQL查询,解析结果,将结果显示给用户。数据库服务器接收查询并向Web服务器返回结果。我们可以通过操纵SQL语句来让数据库服务器返回任意数据,而Web服务器却无法验证数据是否合法,因此会将数据回传给攻击者。

SQL错误通常与不完整的单引号有关,因为SQL要求必须使用单引号将字母和数字的混合值括起来。

寻找SQL注入漏洞的过程包括识别用户数据输入、操纵发送给应用的数据以及识别服务器返回结果的变化。不过,操纵参数产生的错误可能与SQL注入无关。


确认SQL注入

构造有效的SQL注入语句,需要对SQL语言有个基本的了解。执行SQL注入攻击,首先要清楚数据库包含不同的数据类型,它们都具有不同的表示方式,可以将它们分为两类:

  • 数字:不需要使用单引号来表示
  • 其他类型:使用单引号表示

内联SQL注入

内联注入是指向查询注入一些SQL代码后,原来的查询仍然会全部执行。

用户名和口令的数据输入会用两个单引号引起来。
在这里插入图片描述

用以寻找和确认字符串字段是否存在内联注入漏洞
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值