HI Cyber Con CTF 2026. Reverse engineering.
Cold Circuit
Three teams had solved it when the lab started. It needed 7 minutes.
Published 2 November 2026. Challenge by Hidden Investigations.
The brief
A small standalone checker, check, decides whether a flag is right. That's the whole interface.
- cold-circuit.zip, 3.6 KB
In short
A stripped Linux binary checks a flag with 20 rounds of key addition, an S-box and a byte shuffle. Every step can be undone, so the lab ran the rounds backwards from the stored target and got the one input the checker accepts.
A checker and nothing else
The download holds one stripped 14 KB Linux binary called check. It wants hiCTF{ with 32 hex digits, turns them into 16 bytes and answers Access granted or Incorrect.
One round, three steps
The checker runs 20 rounds over the 16 bytes. Each round adds a round key, swaps every byte through a 256 entry S-box and shuffles the positions. The result must equal a target stored in the file.
Everything sits in the file
The lab read the tables straight from the binary, the S-box at 0x2020, the shuffle at 0x2120, 320 bytes of round keys and the target at 0x2280. The S-box uses each of its 256 values once, so every step has an inverse.
Twenty rounds, run backwards
Starting at the target, each pass undoes the shuffle, looks every byte up in the inverted S-box and subtracts the key. Twenty passes later the one input the checker accepts falls out, with nothing guessed.
A trap for debuggers
The checker also calls ptrace. Under a debugger it flips the low bit of the first key byte, 0x8d becomes 0x8c, and a decoy starting 6f30 passes instead of 6e30. Reading the tables from the file never trips it.
The hex itself is the flag
Read as text, the 16 bytes say no JTAG needed. The checker wants them as 32 lowercase hex digits inside hiCTF{}, and then prints Access granted. The text form only gets Bad format.
The insight
Key addition, a one to one S-box and a byte shuffle can all be undone, so a checker built only from them carries its own answer, twenty rounds deep.
The flag
hiCTF{6e305f6a7461675f6e65656465642121}