SQL盲注结合二分法应该更快吧,写了个脚本测试二分法的步骤数量,总的来说比逐个判断更具有效性
#coding:utf-8
import sys
#设置递归深度,默认深度约998
sys.setrecursionlimit(100)
def checknum(unum,bnum,enum,sn):
testNum=sn
if (bnum !=enum) :
if unum<(bnum+(enum-bnum)/2):
if (bnum+(enum-bnum)/unum) !=1:
testNum+=1
print '-------第%d次测试-------' % testNum
print '启动数据:',unum,bnum,enum
print '范围内,继续二分法:',bnum+(enum-bnum)/2,'\r\n'
bnum=bnum
enum=bnum+(enum-bnum)/2
checknum(unum,bnum,enum,testNum)
else:
print bnum+(enum-bnum)/2-1
pass
else:
testNum+=1
print '-------第%d次测试-------' % testNum
print '启动数据:',unum,bnum,enum
print '超出范围,扩大到:',enum-(enum-bnum)/2,'\r\n'
bnum=enum-(enum-bnum)/2
enum=enum
checknum(unum,bnum,enum,testNum)
else:
print 'the num is:',bnum-1,',本次测试次数:',testNum
def start():
unum=19
checknum(unum,0,20,0)
def main():
start()
if __name__ == '__main__':
main()
测试截图: