Sploitus

Exploit for Kaspersky-CTF-2026

githubexploit Β· 2026-08-30

Exploit Code

README87 lines
## https://sploitus.com/exploit?id=386431BB-4A0C-5DD3-A52A-F2DDCD06E9B2
# Kaspersky CTF 2026

Solutions, exploits, and writeups for the challenges our team solved at **Kaspersky CTF 2026**.

- **Event:** Kaspersky CTF 2026 (Jeopardy)
- **Dates:** 29 August 2026 12:00 UTC – 30 August 2026 12:00 UTC
- **Author:** [`hax1ng`](https://github.com/hax1ng)
- **Flag format:** `kaspersky{...}`
- **Solved:** 16 challenges across AI, Forensics, Misc, Pwn, and Web

Each challenge lives in `//` with a self-contained `README.md`
writeup and the final solve scripts / exploits. Large binaries, disk images, packet
captures, virtual environments, and other bulky or sensitive artifacts have been
intentionally left out β€” the writeups explain how to reproduce everything from the
original challenge files.

---

## Solved Challenges

### AI

| Challenge | Points | Summary | Writeup |
|---|---|---|---|
| cold dih | 258 | Codec-robust adversarial audio that fools three judge models at once | [writeup](ai/cold-dih/) |

### Forensics

| Challenge | Points | Summary | Writeup |
|---|---|---|---|
| Ping Pong Show | 269 | RAM dump β†’ Havoc Demon β†’ recover `CryptProtectMemory` key β†’ reverse a UDP Ping Pong protocol and beat the bot | [writeup](forensics/ping-pong-show/) |
| Ryan Guzling | 365 | Rebuild a macOS FileVault Fusion Drive to reach a nested sparsebundle holding the flag | [writeup](forensics/ryan-guzling/) |

### Misc

| Challenge | Points | Summary | Writeup |
|---|---|---|---|
| Good Pineapple | 353 | Moving random-dot autostereogram hides *Bad Apple*; a single frame spells the flag | [writeup](misc/good-pineapple/) |
| KNotes | 429 | `pull_request_target` CI/CD abuse leaks an admin token via a poisoned `uv sync` | [writeup](misc/knotes/) |

### Pwn

| Challenge | Points | Summary | Writeup |
|---|---|---|---|
| RUSTyapa | 500 | Rust release-compiler miscompilation (`rust-lang/rust#155241`) β†’ UAF, tcache poison, ROP shell | [writeup](pwn/rustyapa/) |
| SunHua Gate | 500 | C++ circular-vector `bad_alloc` leaves a size/backing mismatch β†’ OOB R/W β†’ ROP to shell | [writeup](pwn/sunhua-gate/) |
| One Last Babuin | 289 | Interpreter TOCTOU type-confusion escalated to a ROP flag read | [writeup](pwn/one-last-babuin/) |
| toffifee | 285 | zkVM reversing: a guest counter aliased by a circuit wire breaks soundness | [writeup](pwn/toffifee/) |
| slopgate | β€” | QEMU custom-PCI-device DMA-to-BAR MMIO reentrancy UAF β†’ host escape | [writeup](pwn/slopgate/) |

### Web

| Challenge | Points | Summary | Writeup |
|---|---|---|---|
| Cloud Storage | 500 | gRPC billing state-leak chained with a ZODB config-injection RCE | [writeup](web/cloud-storage/) |
| Document Flow Optimizer | 500 | iframe path-traversal + NUL truncation writes a PNG/shell polyglot into a healthcheck | [writeup](web/document-flow-optimizer/) |
| Canary | 330 | DNS-rebinding / Local-Network-Access bypass steals EC2 IMDSv2 credentials | [writeup](web/canary/) |
| Kube Adventure | 318 | Seven-stage Kubernetes privilege-escalation chain starting from a Flagger webhook RCE | [writeup](web/kube-adventure/) |
| Skudik for Studik | 289 | Unsigned JWT + SQLi leading to a snapshot-bypassed command-injection RCE | [writeup](web/skudik-for-studik/) |
| Garden | β€” | `cshogi` drop-move parser mismatch smuggles SQLi past move validation | [writeup](web/garden/) |

---

## Notable Solves

- **Ping Pong Show** β€” a full malware-forensics chain (Outlook attachment β†’ RC4/LZNT1 loader β†’ PoolParty injection β†’ Havoc Demon β†’ CNG key recovery) that ends, absurdly, with writing a bot to *win a networked Ping Pong game* for the flag.
- **RUSTyapa** and **SunHua Gate** β€” both hinge on a *compiler/runtime* quirk rather than obvious source bugs: a real Rust miscompilation and a `std::bad_alloc` that silently desynchronizes a container's size from its backing store.
- **Kube Adventure** β€” a realistic seven-stage cluster-internal privilege-escalation chain (webhook RCE β†’ kube-state-metrics recon β†’ registry pull β†’ Service `externalIPs` traffic hijack β†’ Redis creds β†’ node takeover).
- **cold dih** β€” an adversarial-audio challenge where the payload had to survive lossy codec re-encoding *and* satisfy three separate judge models simultaneously.

## Repository Layout

```
//
β”œβ”€β”€ README.md      # the writeup
β”œβ”€β”€ solve.py       # final exploit / solver (name varies)
└── ...            # small, essential source or artifacts
```

## Disclaimer

All material here targets intentionally vulnerable challenges built for the Kaspersky
CTF 2026 competition, published for educational purposes. Internal/ephemeral
infrastructure details (per-instance hosts, tokens, credentials) have been redacted;
any private-range IP addresses that remain are challenge-internal and non-routable,
kept only where they are needed to follow the writeup.