欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用MySQL位函数和运算符进行基于时间的高效SQL盲注

来源:本站整理 作者:佚名 时间:2018-11-07 TAG: 我要投稿

SQL注入攻击是业界一种非常流行的攻击方式,是由rfp在1998年《Phrack》杂志第54期上的“NT  Web Technology  Vulnerabilities”文章中首次提出的。时过境迁,相关SQL注入的技术和工具都进行了不断的发展和演化。目前 SQL注入漏洞已经是信息安全的一大领域,无论是小到个人网站,还是大到电子商务网站,都或多或少的存在SQL注入漏洞。为什么SQL注入漏洞会屡禁不止,原因就在于要想防御SQL注入漏洞,需要对SQL语句、业务流程行为、各种主流数据库相关机制都有较为深入的认识和理解,才能真正做好SQL注入的攻击和防范。

SQL注入和盲注
    对于SQL注入的定义和一般的判断方法,无非就是著名的三段式。普通SQL注入是通过构造SQL语句,将敏感信息直接暴露在网页上,有两种方式,一种是通过报错方式,一种是通过union select联合查询方式。普通的SQL注入并不是完美的,一旦开发人员将错误页面进行处理,将unionselect关键字进行过滤,注入将不再有效。其实这种修复方式存在较大的问题。如果是在不采取其他措施的情况下,仅仅更换成统一的错误页面是不能避免SQL注入的,这将会产生一种更高级的SQL注入方式盲注。盲注是通过构造SQL判断语句,通过返回页面的不同将信息判断出来。返回页面有三种:有结果页面、0结果页面和错误过滤页面。只要有其中的两个页面,无论哪两个页面都可以,就可以判断存在注入漏洞。当然,这中间还有一个前提,就是这些不同的页面是由输入到URL中的SQL语句执行的不同造成的。但是普通的盲注也不是绝对有效的,一旦没有两个以上的差异页面,或者不能通过页面的不同来来判断 URL中SQL语句的有效性,此时就要使用基于时间的SQL盲注。基于时间的SQL盲注的特点和使用假设有这么一个文件,无论怎么注入,页面内容都一样,但此文件确实存在注入点。最关键的是通过普通盲注不能得到差异页面,没有差异也就没法进行盲注。
    为什么没有差异,有这么几种情况:    第一种情况:无论输入什么都只显示无信息页面,例如登陆页面。这种情况下可能只有登录失败页面,错误页面被屏蔽了,并且在没有密码的情况下,登录成功的页面一般情况下也不知道。在这种情况下,有可能基于时间的SQL注入会有效。
    第二种情况:无论输入什么都只显示正常信息页面。例如,采集登录用户信息的模块页面。采集用户的 IP、浏览器类型、refer字段、session字段,无论用户输入什么,都显示正常页面。
    第三种情况:差异页面不是由输入URL中的SQL语句来决定的。这种情况下,也只能使用基于时间的盲注。
    总之,情况有很多种,只要无法通过差异页面来进行一般SQL盲注,基于时间的SQL盲注就都有存在的可能。Oracle数据库盲注    Oracle中基于时间的盲注主要是使用了DBMS_PIPE.RECEIVE_MESSAGE()函数和CASEWHEN?THEN?语句。下面是一个示例:    5593=(CASE    WHEN    (ASCII(SUBSTRC((SELECT    NVL(CAST([ColumnName]    AS    VARCHAR(4000)),CHR(32))  FROM  (SELECT   [ColumnName],ROWNUM  AS  LIMIT  FROM
 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载