← Back to arena
A04 · Cryptographic Failures · Hard

Algorithm Swap

A04 · ≈ 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

Exploit an asymmetric/symmetric JWT verification confusion in a simulated service.

Required interaction

GET /keys/public.pem, then OPEN /api/partner/admin.

Completion proof

recover a protected value or produce an accepted synthetic forgery through the application service; 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 · A04 · Algorithm Swap

Objective

Exploit an asymmetric/symmetric JWT verification confusion in a simulated service.

Steps

  1. Start the isolated CipherBank workspace and inspect its service operation and requests.
  2. Capture the synthetic cryptographic artifact, token, oracle response, or protocol negotiation output.
  3. Exploit the cryptographic design or implementation failure: GET /keys/public.pem, create an HS256 JWT with role admin using those public bytes as the HMAC key, then call /api/partner/admin with the forged Bearer token.
  4. Confirm the recovered secret, accepted forgery, or bypass returns the rotating instance flag.
  5. Submit the exact flag before stopping or expiring the instance.

Expected proof

A successful response for jwt-key-confusion 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.