如何提高盲注的效率

0x01 SQL注入之盲注

提到SQL注入,我想懂安全的小伙伴们应该都知道的,那么今天就来聊一聊关于如何提高盲注效率的问题。

盲注的话大体上分为三类把。

  • 布尔盲注
  • 时间盲注
  • 报错盲注

0x02 提高效率

一般盲注提高效率的话有两点

  1. 减少查询次数
  2. 提高查询的正确性

那么第一种方法我想说的就是二分法

二分法的话,学过数据结构的人都懂的,答题思路我用如下python代码来做介绍:

1
2
3
4
5
6
def inject(a, list, start, end):
if start == end:
return list[start]
if ord(a) > list[(start+end)/2]:
return inject(a, list, end/2, end)
return inject(a, list, start, end/2)

这里我解释一下上述的代码。这里a是要查询的那一位字符,list是a-zA-Z0-9这种用来对比的字符串,start是开始,end是结束。进入函数,如果start等于end说明找到了,返回那个字符,如果a的ascii值大于list的中间字符的ascii,说明a的真正值在list的后半部分,因此start变为end/2;否则的话就是a的值在list的前半部分,因此end变成end/2

第二种方法就是位运算法

原理就是每次查询确定一位,这样一个字符只需要8次就可以确定了,利用位运算符&,可以通过bin(ascii(‘a’))&1,2,4,8,16…来获取8位二进制

本文标题:如何提高盲注的效率

文章作者:Pino-HD

发布时间:2018年05月30日 - 22:05

最后更新:2018年05月30日 - 22:05

原始链接:https://pino-hd.github.io/2018/05/30/如何提高盲注的效率/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!