站长资讯网
最全最丰富的资讯网站

sql注入的三种方式是什么

sql注入的三种方式是:1、数字型注入,当输入的参数为整型时,可能存在数字型注入漏洞;2、字符型注入,当输入参数为字符串时,可能存在字符型注入漏洞;3、搜索型注入,在进行数据搜索时没过滤搜索参数。

sql注入的三种方式是什么

本教程操作环境:windows7系统、python3版、Dell G3电脑。

SQL 注入原理

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL 注入分类

1. 数字型注入

当输入的参数为整型时,则有可能存在数字型注入漏洞。

假设存在一条 URL 为:HTTP://www.aaa.com/test.php?id=1

可以对后台的 SQL 语句猜测为:

SELECT * FROM table WHERE id=1

判断数字型漏洞的 SQL 注入点:

① 先在输入框中输入一个单引号 '

这样的 SQL 语句就会变为:

SELECT * FROM table WHERE id=1',

不符合语法,所以该语句肯定会出错,导致脚本程序无法从数据库获取数据,从而使原来的页面出现异常。

② 在输入框中输入 and 1 = 1

SQL语句变为:

SELECT * FROM table WHERE id=1 and 1 = 1

语句正确,执行正常,返回的数据与原始请求无任何差异。

③ 在数据库中输入 and 1 = 2

SQL 语句变为:

SELECT * FROM table WHERE id=1 and 1 = 2

虽然语法正确,语句执行正常,但是逻辑错误,因为 1 = 2 为永假,所以返回数据与原始请求有差异。

如果以上三个步骤全部满足,则程序就可能存在数字型 SQL 注入漏洞。

2. 字符型注入

当输入参数为字符串时,则可能存在字符型注入漏洞。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符型一般需要使用单引号来闭合。

字符型注入最关键的是如何闭合 SQL 语句以及注释多余的代码。

假设后台的 SQL 语句如下:

SELECT * FROM table WHERE username = 'admin'

判断字符型漏洞的 SQL 注入点:

① 还是先输入单引号 admin' 来测试

这样的 SQL 语句就会变为:

SELECT * FROM table WHERE username = 'admin''。

页面异常。

② 输入:admin' and 1 = 1 —

注意:在 admin 后有一个单引号 ',用于字符串闭合,最后还有一个注释符 –(两条杠后面还有一个空格!!!)。
SQL 语句变为:

SELECT * FROM table WHERE username = 'admin' and 1 = 1 —

页面显示正确。

③ 输入:admin' and 1 = 2 —

SQL 语句变为:<

SELECT * FROM table WHERE username = 'admin' and 1 = 2 —

页面错误。

满足上面三个步骤则有可能存在字符型 SQL 注入。

3.搜索型注入

这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有 "keyword=关键字" 有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%' 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where 字段 like '%测试%' and '%1%'='%1%'

以下是一些常见的注入叫法:

  • POST注入:注入字段在 POST 数据中

  • Cookie注入:注入字段在 Cookie 数据中

  • 延时注入:使用数据库延时特性注入

  • 搜索注入:注入处为搜索的地方

  • base64注入:注入字符串需要经过 base64 加密

常见数据库的注入

攻击者对于数据库注入,无非是利用数据库获取

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号