盲SQL注入

盲SQL注入
https://fortoscer.com/forum.php?mod=viewthread&tid=9
(出处: 信息安全社区)

这是一种攻击

描述
盲SQL(结构化查询语言)注射是一种类型的SQL注入攻击,询问数据库真或假的问题,并确定基于该应用程序的响应的答复。当web应用程序被配置为显示一般错误消息,但并没有缓解是易受SQL注入代码此攻击经常被使用。
当攻击者利用SQL注入,有时Web应用程序从数据库中抱怨SQL查询的语法不正确显示错误消息。盲SQL注入几乎是相同的正常SQL注入,唯一的区别是将数据从数据库中检索的方式。当数据库不输出数据到网页中,攻击者被迫通过询问数据库一系列真或假的问题窃取数据。这使得利用SQL注入漏洞比较困难,但并非不可能。。

例子
攻击者可以验证发送请求是否返回在几个方面true或false:
基于内容的
用一个简单的页面,它显示与给定的ID作为参数的信息,攻击者可以执行几个简单的测试,以确定该页面是易受SQL注入攻击。
示例网址:
  1. http://newspaper.com/items.php?id=2
复制代码
发送以下数据库查询:
  1. SELECT title, description, body FROM items WHERE ID = 2
复制代码
然后,攻击者可以尝试注入返回“假”的查询:
  1. http://newspaper.com/items.php?id=2 AND 1 = 2
复制代码
现在应该在SQL查询如下所示:
  1. SELECT title, description, body FROM items WHERE ID = 2 and 1=2
复制代码
如果Web应用程序容易受到SQL注入,那么它可能不会返回任何东西。 为了确保,攻击者将注入一个查询,将返回“真”:
  1. http://newspaper.com/items.php?id=2 and 1 = 1
复制代码

如果返回“真”页面的内容比返回“假”页面的不同,那么攻击者能够在执行的查询返回true或false来区分。
一旦这个已经核实,唯一的限制是由数据库管理员,不同的SQL语法,以及攻击者的想象力设置权限。


基于时间的
这种类型的盲目SQL注入的依赖于数据库暂停了指定的时间量,然后将结果返回,表示成功的SQL查询执行。使用这种方法,攻击者列举使用以下逻辑数据的所需块中的每个字母:
如果第一个数据库的名字的第一个字母是'A',等待10秒钟。
如果第一数据库的姓名的第一个字母为“B”,等待10秒。等等

针对Microsoft SQL Server如下:
  1. http://www.site.com/vulnerable.php?id=1'WAITFOR DELAY '00:00:10' -
复制代码
针对MySQL如下:
  1. SELECT IF(expression, true, false)
复制代码
使用一段时间后回吐操作如BENCHMARK(),将延迟服务器响应,如果表达式为true。
  1. BENCHMARK(5000000,ENCODE('MSG','by 5 seconds'))
复制代码
- 将执行编码功能500万次。

根据数据库服务器的性能和负载时,应花一点点时间来完成这个操作。重要的是,从攻击者的角度来看,以指定一个足够高的数BENCHMARK()函数的重复来影响数据库的响应时间在一个引人注目的方法。
两种查询的例子组合:
  1. 1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM users WHERE user_id = 1;
复制代码
如果数据库响应花了很长时间,我们可以预期,随着USER_ID = 1的第一个用户密码字符为“2”。
  1. (CHAR(50)=='2')
复制代码

使用这种方法对字符的其余部分,这是可能的,以列举存储在数据库中的整个密码。即使攻击者注入的SQL查询和弱势群体页的内容不会改变,此方法有效。
显然,在这个例子中,被指定的表和列数的名称。但是,它可能猜测他们或以试错的方法进行检查。
比MySQL其它数据库也有基于时间的函数,使它们能够被用于基于时间的攻击:

  • MS SQL 'WAIT FOR DELAY '0:0:10
  • PostgreSQL - pg_sleep()

开展Blind_SQL_Injection攻击手工非常耗时,但也有很多这这个过程自动化的工具。 SQLMAP SQL注入工具的其中之一。 另一方面,这种工具是从规则即使小的偏差非常敏感。 这包括:

  • 扫描其他网站集群,其中,时钟不理想同步,
  • WWW服务,其中参数获取方法改变,例如从/index.php?ID=10到/ ID,10

远程数据库指纹如果攻击者能够确定,当他查询返回真或假,那么他可能会指纹RDBMS。这将使整个攻击要容易得多。如果使用基于时间的方法,这有助于确定在使用什么类型的数据库。另一种流行的方法来做到这一点是调用,这将返回当前日期的功能。MySQL和MSSQL和Oracle有不同的功能为,分别为NOW() GETDATE()SYSDATE() 

盲SQL注入
https://fortoscer.com/forum.php?mod=viewthread&tid=9
(出处: 信息安全社区)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值