Press ESC to close Close ✕

Black Lotus Protocol CTF Challenge

[#] BLACK LOTUS PROTOCOL :: v1.0

root@lotus:~$ ./init --level=elite --target=grand_horizon _
RATING UNCLASSIFIED
PROGRESS
0/5
NODE: lotus-01.cyber-range
UPTIME: 00:00:00
PID: 1337
STATUS: ACTIVE IFACE: tun0 :: 10.7.7.1/24 SESSION: BLACK_LOTUS_v1 TARGET: grand_horizon_resort

STAGE 01 :: HEX_FOREST

Analyze the captured memory hexdump. Somewhere in this forest of bytes, a message hides in the shadows of the least significant bits. DIFFICULTY: ELITE

xxd -l 512 captured_memory.bin RAW DUMP
# 512 bytes of stack memory – watch the LSBs
# Hint: LSB = Least Significant Bit. The last bit of each byte carries a secret.

STAGE 02 :: XOR_GATE

Intercepted ciphertext from the resort's booking engine. Key derivation uses the previous stage's answer as the seed. Known-plaintext attack required. DIFFICULTY: ARCHMAGE

cat intercepted.bin | xxd CIPHERTEXT
ciphertext (hex):
key_hint: The key is derived from STAGE_01 answer, repeated.
algorithm: XOR (bytewise)
# Use the previous answer as the XOR key. Decrypt to plaintext.

STAGE 03 :: VM_CRACK

Reverse engineer the custom bytecode VM. The interpreter is shown below along with its bytecode. Determine what input string the VM accepts. DIFFICULTY: LEGENDARY

cat vm_interpreter.js SOURCE
xxd bytecode.bin BYTECODE
# Reverse the VM operations. Find the 10-byte input that passes all checks.

STAGE 04 :: TIMING_ORACLE

Side-channel attack. The password validator leaks one character at a time through response latency. Exploit the timing differential to recover the 10-char password. DIFFICULTY: ANCESTRAL

./timing_oracle --attack SIDE-CHANNEL
# Each correct character adds ~200ms delay. Use console timing to extract char by char.
latency:
# Once you know all 10 chars, submit below.

STAGE 05 :: FINAL_COMBINE

Synthesize all previous discoveries. The final key unlocks the root keystore. Construct it from the four recovered tokens. DIFFICULTY: ASCENDED

cat keystore.asc ENCRYPTED
-----BEGIN PGP MESSAGE-----
jA0ECQMCdFhX1qGn1tNg0kUBh7+Lr4yH5sT7vW2x3c8R9mKp6yZ4QNfB1a
3sXCvBnM9kLp8rT5yH7wQ2nM6kLp9rT5yH7wQ2nM6kLp9rT5yH7wQ2nM
=iL9k
-----END PGP MESSAGE-----
// key = STAGE1 + "-" + STAGE2 + "-" + STAGE3 + "-" + STAGE4