← Back to arena
A08 · Software or Data Integrity Failure · Hard

Pickled Preference

A08 · ≈ 45 min · 0 solves

350POINTS
MISSIONDiscover the weakness independently

Explore the application as a real target: map the exposed functionality, inspect requests and responses, build a working exploit, and recover the rotating flag. If you get stuck, the verified official solution is available below as an optional spoiler.

Rules of engagement

Stay inside the generated lab URL. Use only the synthetic accounts and data in this instance. The main SecOne4all site and external systems are out of scope.

Challenge brief

FLAG REQUIREMENTS

What counts as a valid solve

Goal

A signed-looking preference blob is deserialized with Python pickle.

Required interaction

POST /pickle.

Completion proof

make the integrity-sensitive workflow accept the modified synthetic object or artifact; the successful workflow returns the current rotating flag.

Session rule

Work only inside your generated lab URL and submit the flag within 45 minutes.

VERIFIED WALKTHROUGH

Official solution

Contains the complete exploitation path. Open it only when you want the spoiler.

Reveal official solutionStep-by-step · verified against the live lab

Official solution · A08 · Pickled Preference

Objective

A signed-looking preference blob is deserialized with Python pickle.

Steps

  1. Start the isolated lab and inspect the parser, import, update, or message workflow.
  2. Prepare a modified object or artifact that should fail authenticity or type validation.
  3. Exercise the real vulnerable integrity boundary: Base64-encode a pickle gadget whose reducer evaluates __import__('os').environ['CTF_FLAG'], then POST it as blob to /pickle.
  4. Confirm the untrusted object is processed and the rotating instance flag is returned.
  5. Submit the flag before stopping the lab.

Expected proof

A successful response for python-pickle-deserialization returns the instance-specific rotating flag. The flag is valid only for the current player and running instance.

Safety boundary

Use only the generated lab URL. No request to the main site, another user, or an external service is part of this solution.