sql注入漏洞

什么是万能密码

      在说sql注入分类之前,先来看一下万能密码的构成原理。万能密码是由于某些程序,通过采用判断sql语句查询结果的值是否大于0,来判断用户输入数据的正确性造成的。当查询之大于0时,代表用户存在,返回true,代表登录成功,否则返回false 代表登录失败。由于 ‘or 1=1–’ 在执行后,结果始终为1,所以可以登录成功。因此,被称为万能密码。

什么是sql注入

      SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。产生的原因是接受相关参数未经处理直接带入数据库查询操作。xss属于客户端的攻击,而sql注入属于服务端的攻击。(注意:注入最终是数据库,与脚本、平台无关。)

通常 Sql 注入漏洞分为 2 种类型:

  • 数字型
    当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。

  • 字符型
    当输入的参数为字符串时,称为字符型。字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。

Sql 注入产生原因

      当访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。
      这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则可能带来危险。

sql注入攻击通常过程:

1.判断是否存在注入漏洞
2.收集信息、并判断数据库类型
2.根据注入参数类型,重构SQL语句
3.猜解表名、字段名(获取数据库信息)
4.获取有用的数据、为下一步攻击提供准备

Sql 注入带来的威胁主要有如下几点:

    ●  猜解后台数据库信息  盗取网站敏感信息
    ●  绕过认证,获得非法权限
    ●  盗取网站敏感信息
    ●  注入可以借助数据库的存储过程进行提权等操作

sql注入漏洞分析

  1. 构建特殊的数据库查询语句
  2. 获得数据库信息
  3. 动态查询数据库
  4. 返回数据库信息
  5. 利用sql语句猜测管理员信息,尝试登录管理员后台 (最后对其进行入侵和破坏等)

一般有GET、POST、COOKIE三种方式。
其中mysql注入
      对用户提交的参数未进行过滤或过滤不严导致。
(Mysql5中新增加了一个信息表information_schema,可以通过查询得到相关重要信息)

cookices注入:
      Cookie注入简单来说就是利用Cookie而发起的注入攻击。从本质上来讲,Cookie注入与传统的SQL注入并无不同,两者都是针对数据库的注入,只是表现形式上略有不同。(涉及浏览器端的JavaScript层或html层)

注入点一般呈现为:

http://www.xxxxx.com/xxx.asp?id=xx(asp注入)
http://www.xxxxx.com/xxx.php?id=xx(php注入)
http://www.xxxxx.com/xxx.jsp?id=xx(jsp注入)
http://www.xxxxx.com/xxx.aspx?id=xx(aspx注入)
http://www.xxxxx.com/index.asp?id=8&page=99(注意要确认id是参数还是page是参数,工具默认只对后面的page参数注入)
http://www.xxxx.com/index/new/id/8 伪静态
http://www.xxxx.com/index/new/php-8.html 伪静态

一些万能密码:

sql盲注

      盲注与普通注入的区别:

  • 普通注入有两个特征:一是会将数据库的内容查询并回显到页面上(这是最主要的),二是会返回原始的数据库错误信息(这是次要的)。数据会回显到页面上,那么我们可以从返回的页内中提取我们的数据库名等数据。
  • 盲注对应的也有两个特征:一是不会将数据库内容回显到页面上(这是主要的),二是不会返回原始的数据库错误信息。不会将数据库内容回显到页面上(只告诉你存不存在)

由此我们可以把我们的猜测构造成一个布尔表达式。
      如果返回的内容和原来一样那该表达式的猜测就是对的,如果返回的内容和原来不一样那该表达式的猜测就是错的。(比较和原来是否一样的形式即布尔型盲注,构造延时这种形式即时间型盲注。)

sql注入漏洞防御

  1. 构造的sql语句时使用参数化形式而不使用拼接方式能够可靠地避免sql注入;
  2. 拼接加对输入进行单引号和sql关键字过滤;

在此之前有一章简单的sql注入漏洞过程可以参考一下“SQL手工注入漏洞测试(MySQL数据库)”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值