2024.06.21Blog on CTFs

Challenge archive: Google CTF 2024 - desfunctional

Google CTF 2024 - Cryptography.

Section
Blog on CTFs
Event began

By deuterium.

Original description

A newbie friend of mine was trying to implement a secure server for DES encryption and decryption but there seem to be some errors unexpectedly creeping in the key. It is getting frustrating, please help

Read this challenge as plain text or JSON.

Browser practice

desfunctional terminal

Practice only. Rewards are public dummy values, not event flags. Completion is saved separately on this device when storage is available. Nothing runs until you choose Start.

Browser practice needs JavaScript and module Worker support.

Enter sends; Shift+Enter adds a line. Input is not echoed in program output. Stop interrupts computation; Reset clears the session without starting another.

Browser limits and console API

Limits use UTF-8 bytes: 2 MiB per input line, 4 MiB and 4096 lines per batch (including separators), 8 MiB output per operation, and a 1 MiB visible transcript. Earlier output is replaced with a truncation notice. Setup progress is separate, capped at 1024 characters and four updates per second. Original challenge deadlines still apply after setup; there is no extra setup deadline.

The console API is window.challengePractice: start(), send(stringOrLines), stop(), and reset(). Select the version above before starting. Start and Send resolve at the next input prompt or program exit with {output, state, solved}; output contains only that operation's program text. Concurrent operations are rejected. Stop, Reset, deadlines and Worker failures reject in-flight operations; terminal errors carry partial output in error.result.

Strings accept LF or CRLF; a final newline ends the last line without adding another blank line. An empty string sends one blank line. Arrays contain literal lines without LF. Unused lines are discarded if the program exits. Reset keeps saved completion. Public dummy rewards do not unlock the original answer checker.

Files

These files describe the original interactive service. The browser practice above is local; no TCP endpoint or retired remote service is connected.

The original remote service is retired. Browser practice runs locally with the public dummy reward practice{local_dummy_reward}; it does not award an event solve.

Download

Sh
mkdir -p google-ctf-2024-desfunctional
cd google-ctf-2024-desfunctional
curl --fail --location --output challenge.txt \
  "https://deut-erium.github.io/challenges/google-ctf-2024/desfunctional/challenge.txt"
curl --fail --location --output challenge.json \
  "https://deut-erium.github.io/challenges/google-ctf-2024/desfunctional/challenge.json"
curl --fail --location --output chall.py \
  "https://deut-erium.github.io/assets/challenges/google-ctf-2024-desfunctional/chall.py"

Sources and solutions (spoilers)

All challenges · CTF tutorials