1.分析日志找到进行盲注判断的位置进行分析:
分析过程 :
拿一条举例,该语句表述当判断当第22位的ascii码大于100时,将延迟1秒,所以将继续进行二分法的拆分,根据大于102和101时没有延时说明小于101,此时判断是否等于101,因此101的ascii对应的应该是盲注判断出来的字符串。
2.根据以上分析,可以手动提取不等于的ascii码进行字符串转换也可以写脚本:
import urllib.parse
import requests,re
f = open('紧急网络安全事件.log','r',encoding='gb18030',errors='ignore')
lines = f.readlines()
flag_ascii = {}
for line in lines:
if len(line) > 2:
request = urllib.parse.unquote(urllib.parse.unquote(line))
matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)!=(.*?),0,1\)',request)
#flag ORDER BY flag LIMIT 0,1),22,1))>101,0,1)
if matchObj:
key = int(matchObj.group(1)) # key保存字符的位置
value = int(matchObj.group(2)) # value保存字符的ascii编码
print(matchObj.group(1),':',matchObj.group(2))
flag_ascii[key] = value # 用字典保存flag
flag = ''
for value in flag_ascii.values():
flag += chr(value)
print (flag)