zoukankan      html  css  js  c++  java
  • 网络安全从入门到精通 (第四章-3) 注入之全方位利用-盲注

    本文内容:

    • 盲注介绍
    • 盲注需要掌握的函数
    • 盲注的具体流程
    • 延时注入(时间注入)
    • 延时注入的具体流程
    • 使用工具sqlmap进行盲注和延时注入

    1,盲注介绍:

      千篇一律要提的,注入攻击的本质,是把用户输入的数据当做代码执行。

      两个关键条件:

        1.用户能够控制输入。

        2.原本程序要执行的代码,拼接了哟用户输入的数据。

      盲注所对应的是显错注入,有很多时候,Web服务器关闭了错误回显,这时候就没有办法进行SQL注入了吗?

      实际上:盲注就是在服务器没有错误回显的时候完成的注入攻击,服务器没有错误回显,对于攻击者来说缺少了非常重要的调试信息。

      类型:

        1.布尔盲注:

          布尔盲注很明显Ture和Fales,也就是它只会根据注入信息返回Ture和False,也就没有了之前的报错信息。

        2.时间盲注:界面返回一种,Ture无论输入任何值,返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回时间差来判断注入的语句是否正确。

    2.盲注需要掌握的函数

      length()函数返回字符串的长度。

      举例:返回当前数据库长度:select length(database())

      substr()截取字符串,语法:substr(str,start,len)

        解释:

          str:为字符,

          start:为起始位置

          len:为长度

      ascii():返回字符串ASCII码[将字符变为数字]

      举例:(substr(database()),1,1)>x,sleep(5),'a')

    3,盲注的具体流程:

      可以一个sleep()函数,打进去,我们就可以判断是否具有SQL注入了,在观看,是否有数据返回,如果没有数据返回,我们就可以使用盲注了。

      1.判断数据库名字的长度:

        length(database())>x

      2.判断数据库名字的每个字母。

        ascii(substr(database(),1,1))>x

      3.依次这样判断下去,判断出库名,表名,字段名,数据内容,可以使用group_concat()或者limti n,m

    解释:substr(database(),1,1)>1,的意思就是判断数据库第一个字母是否大于1

       ascii(substr(database()),1,1)>1 的意思是判断数据库第一个字符的ASCII码是否大于,通过ASCII码我们就可以得到数据库的名字了。

    4,延时注入:也就是时间盲注

      需要掌握:if(exprl1,exprl2,exprl3)判断语句,如果第一个语句正确就执行第二个语句,如果错误,就执行第三个语句。

      举例:

      if(ascii(suustr(database(),1,1))>x,sleep(5),'a')

      具体流程:

        使用sleep判断是否存在SQL注入

        将if函数打进去,判断正确,浏览器就会休眠5秒,判断错误,浏览器直接返回。然后像做布尔盲注一样,逐次判断,最后的出库名、表名、字段名、数据内容。

    我们可以感受到,盲注的人工注入,很麻烦,很麻烦,所以在做盲注时,优先考虑使用工具。

    5,使用sqlmap跑盲注

      1.使用burpsuite抓包,存入到txt文档,

      2.然后使用sqlmap -r 打开文件,开始跑,然后爆库、爆表、爆字段、爆数据。

      3.爆库:

         sqlmap -r /root/桌面/1.txt --dbs

      4.爆表:

         sqlmap -r /root/桌面/1.txt --tables -D 库名

      5.爆字段:

         sqlmap -r /root/桌面/1.txt --columns -T 表名 -D 库名

      6.爆内容:

         sqlmap -r /root/桌面/1.txt --dump -C 字段名 -T 表名 -D 库名

    使用工具,我们就发现,盲注简单多了,但是我们不能太依赖,工具,关于注入的原理等知识,我们还是要了解的。

    与君共勉:

    失败者,

    往往是热度只有五分钟的人;

    成功者,

    往往是坚持最后五分钟的人;

  • 相关阅读:
    java的map
    linux的date的几个例子
    URI记录
    eclipse进行关联代码
    hive的top n
    python类定义
    sql一些常用的经典语句,最后是select as的用法
    linux,shell脚本set -x的意思
    python循环for,range,xrange;while
    python安装json的方法;以及三种json库的区别
  • 原文地址:https://www.cnblogs.com/xz25/p/12591893.html
Copyright © 2011-2022 走看看