SQL Injection SQL注入原理、分类、盲注、利用、防范(一)

一、sql注入的原理与分类

1、原理

在owasp发布的top 10漏洞里面,注入漏洞一直是危害排名第一,其中数据库注入漏洞是危害最大也是最受关注的漏洞。

当攻击者发送的sql语句被sql解释器执行,通过执行这些恶意语句欺骗数据库执行,导致数据库信息泄露。

2、分类

1、常见的sql注入按照参数类型可分为两种:数字型字符型

当发生注入点的参数为整数时,比如 ID,num,page等,这种形式的就属于数字型注入漏洞。同样,当注入点是字符串时,则称为字符型注入,字符型注入需要引号来闭合。

2、也可以根据数据库返回的结果,分为回显注入、报错注入、盲注

回显注入:可以直接在存在注入点的当前页面中获取返回结果。

报错注入:程序将数据库的返回错误信息直接显示在页面中,虽然没有返回数据库的查询结果,但是可以构造一些报错语句从错误信息中获取想要的结果。

盲注:程序后端屏蔽了数据库的错误信息,没有直接显示结果也没有报错信息,只能通过数据库的逻辑和延时函数来判断注入的结果。根据表现形式的不同,盲注又分为布尔盲注Boolean-based blind)和时间型盲注(time-based blind)两种类型。

(按照注入位置及方式不同分为:post注入,get注入,cookie注入,盲注,延时注入,搜索注入,base64注入,无论此种分类如何多,都可以归纳为以上两种形式)

3、注入测试

1、数字型:

猜测SQL语句:

select 字段名 from 表名 where id = 1;

http://www.sql.com/xxx.php?id=1              假设ID为存在注入的参数
http://www.sql.com/xxx.php?id=1‘             语句报错
http://www.sql.com/xxx.php?id=1 and 1=1      页面正常返回结果
http://www.sql.com/xxx.php?id=1 and 1=2      页面返回错误

如果以上几个测试步骤结果全部满足,就可能存在sql注入漏洞。

  数字型注入一般出现在asp php等弱类型语言中,弱类型语言会自动推导变量类型,例如,参数id=1,PHP会自动把ID的数据类型推导为int类型,若是 id=1 and 1=1,则把ID推导为string类型。但是对于Java、c#这类强类型语言,如果把一个字符串转换为int类型,则会抛出异常,无法运行,所以数字型注入一般出现在弱类型的语言当中,强类型语言很少存在。

2、字符型:

猜测SQL语句:

select 字段名 from 表名 where id =‘;

http://www.sql.com/xxx.php?id=1                      假设ID为存在注入的参数
http://www.sql.com/xxx.php?id=1‘                     语句报错
http://www.sql.com/xxx.php?id=1' and 1=1 and '1'='1  页面正常返回结果
http://www.sql.com/xxx.php?id=1' and 1=2 and '1'='1  页面返回错误

3、搜索型:

猜测SQL语句:

select 字段 from 表名 where username like ‘%k%’;

http://www.sql.com/xxx.php?search=test                  假设search为存在注入的参数
http://www.sql.com/xxx.php?search=test'                 语句报错
http://www.sql.com/xxx.php?search=test%' and 1=1 and '%'='   页面正常返回结果
http://www.sql.com/xxx.php?search=test%' and 1=2 and '%'='   页面返回错误

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值