Skip to content

Back to all notes

From the notebook

TCP1P Web Challenge Playtest Results — All 79 Challenges

Saved reading ↗

Review status: not recorded

This is a working reference. The source’s edit date is not a verification date; examples can depend on software versions and configuration. No separate technical review has been recorded.

3 min read

Results recorded 2026-09-28. All 79 challenges from the TCP1P repository playtest registry are included. Latest outcomes: 72 recorded as solved, one stuck (#02), one deferred (#55), three handout-blocked and two environment-blocked. Recorded as solved does not mean every run is a fully reviewed intended solve; individual qualifications are retained below.

Players used GPT-6 Sol at xhigh, with a 60-minute cap. Each row shows the latest recorded attempt, not cumulative time across retries or repairs. Approximate times and upper bounds remain marked. Blocked and deferred entries have no valid solve time.

For #01, #02, #47, #69, #73 and #74, first-flag time is measured from launch, and every external window lasted exactly 3,600 wall-clock seconds. Earlier runs use their recorded active/playtest time; the timing origins differ. These six latest runs allowed public internet research including challenge-specific writeups and solvers. Older procedural boundaries and later workspace-enforced boundaries are recorded in the evidence. This is not a clean blind resistance or platform-acceptance claim.

Important qualifications

  • #02 Nujabes: the reference solver works and recovers the live flag. The AI did not complete the path within 60 minutes. All three services remained healthy with zero restarts. Missed steps were slashless check-song upload dispatch and the explicit shared app/bot log mount.
  • #53 perteam-portal and #54 shared-portal: intentional platform demos, not exploitation challenges. Their original descriptions explicitly tell players to find the static flag on the page. Exclude their trivial captures when assessing exploitation difficulty.
  • #01: public browser documentation assisted the intended username/password oracles; no matching public solver was found. First flag was 34m43s from launch (34m03s after availability checks). Zero target restarts. A wrapper bookkeeping error occurred after the full external timeout; a short same-room continuation followed. Do not describe it as uninterrupted active inference.
  • #47: public caching documentation assisted the intended history/cache path; later analogous writeup informed a variation. First flag 5m45s. The frozen browser was Chrome 131; this is not a latest-runtime claim.
  • #69: a public PHP article supplied the decisive SQLite native-loader technique. First flag 8m06s. A post-solve player configuration probe caused about 11m34s of HTTP 500; removing only the player-created file recovered the target without restart. Not a continuously healthy full-hour run.
  • #73: challenge-specific public writeup and author solver assisted Apache/PECL discovery. First flag 6m02s. Original one-request callback reference was independently reverified on the exact image. No shortcut removing the intended execution/helper boundaries was demonstrated.
  • #74: public author solver supplied the Mongoose/Sift gadget. One manual application reset cleared player-induced prototype pollution before first capture (5m43s); MongoDB and player data were retained. Docker RestartCount did not record that manual reset. Not an uninterrupted healthy hour.
  • #08: the recorded capture was the source fallback test flag; deployment flag remains unverified.
  • #46: an exploit was demonstrated, but repeated php-fpm restarts invalidated the run as a stable solve measurement.
  • #56 kuta: solved after 31m21s, but intendedness of the startup-command route has not been confirmed in the current audit.
  • #55 Challenge Kepepet: original Rust application source is missing. The author explicitly deferred reconstruction and further testing.

Unsolved at the 30-minute mark

#02 remained unsolved for its full 60-minute window. #40 solved at 39m51s and #01 at 34m43s with the qualifications above. #56 solved at 31m21s but still needs intended-path confirmation. These are individual attempt results, not guaranteed minimum solve times.

All challenge results

Challenge links point to the pinned original GitHub source. Evidence paths refer to the local challenge-authoring workspace; they are not public links.

IDChallenge / pinned sourceLatest resultAI solve timeNotes and local evidence
01ExistentialCrisis Revengesolved34m43sSolved: first flag 34m43s from launch; full 60m external window. Public browser documentation assisted. Post-timeout bookkeeping limitation recorded. Local evidence: .author/test-runs/001-whitebox-60m-openweb1/author-validation.json, .author/test-runs/001-whitebox-60m-openweb1/author-review.md.
02NujabesstuckNot solved in 60m00sStuck: no flag in the full 60m external window. Reference works; missed slashless upload dispatch and shared bot/log mount. Zero target restarts. Local evidence: .author/test-runs/002-whitebox-60m-openweb1/author-validation.json, .author/test-runs/002-whitebox-60m-openweb1/author-review.md.
03ctfifysolved6m50sSolved in 6m50s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/003-whitebox/author-validation.json.
04kawaikute-gomensolved4m15sFixed-hash check bypassed by no-output shell substitution in gRPC stream ID; live flag captured (4m15s) Local evidence: .author/test-runs/004/PLAYTEST-REPORT.md.
05Intechfest Game Design Competitionsolved7m46sSolved in 7m46s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/005-whitebox/author-validation.json.
06NOTEIFYsolved19m24sSolved in 19m24s on the current white-box handout. Boundary: workspace-enforced. Local evidence: .author/test-runs/006-whitebox-repair3/author-validation.json.
07Samehadaku KWsolved12m22sZIP symlink read, admin/TAR symlink write, and YAML constructor reached flag (12m22s); target-only Python 3.11 pin Local evidence: .author/test-runs/007/PLAYTEST-REPORT.md.
08Imposiblesolved~2mMiddleware-slice race reached /flag in ~2m; response contained only the source fallback test flag, so deployment flag remains unverified Local evidence: .author/test-runs/008/PLAYTEST-REPORT.md.
09Notes Managersolved2m28sRegistered user read the Flag note by direct UUID GET, bypassing its password step (2m28s) Local evidence: .author/test-runs/009/PLAYTEST-REPORT.md.
10The Librarysolved12m35sDynamic LINQ boolean oracle read the root flag (12m35s) in a clean fresh retry; first .NET run preserved as conservative contamination Local evidence: .author/test-runs/010-retry-002/PLAYTEST-REPORT.md.
11Blue Mondaysolved5m01sSanitizer/XHTML parser differential plus same-origin JSONP beat CSP; bot callback captured flag (5m01s) Local evidence: .author/test-runs/011/PLAYTEST-REPORT.md.
12Bunsolved13m42sBun path/NUL read exposed token; chosen-file write plus loader preload captured live flag (13m42s) after target-only GNU wget repair Local evidence: .author/test-runs/012-retry-002/PLAYTEST-REPORT.md.
13Notes Managersolved2m08sProfile role=admin exposed flag note; direct UUID GET bypassed password UI (2m08s); target-only MySQL 8.0 pin Local evidence: .author/test-runs/013/PLAYTEST-REPORT.md.
14UREL-EX2Ssolved7m09sBot-facing app path XSS sent live flag cookie to declared callback (7m09s); target-only Java base image pin Local evidence: .author/test-runs/014/PLAYTEST-REPORT.md.
15nodejs-enthusiastblocked-handout— (no valid solve run)declared ZIP leaks configured flag
16ezz-memento-rsctf-dynamicsolved1m38sSolved in 1m38s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/016-whitebox/author-validation.json.
17A simple websitesolved1m44s104 s; Nuxt/Vite file read Local evidence: .author/test-runs/017/PLAYTEST-REPORT.md.
18Bypasssssssolved0m59s59 s; unauthenticated viewer traversal skips login Local evidence: .author/test-runs/018/PLAYTEST-REPORT.md.
19Latexblocked-handout— (no valid solve run)declared ZIP includes challenge.yml with configured flag
20Un Securesolved2m06s126 s; PHP deserialization gadget chain Local evidence: .author/test-runs/020/PLAYTEST-REPORT.md.
21calculatorsolved17m05s17m05s on fresh attempt 004; expression-chain file read; Deno 1 target repair Local evidence: .author/test-runs/021/PLAYTEST-REPORT.md.
22love cardsolved1m32s92 s; error_log file write to PHP execution; target cycles every 20 s Local evidence: .author/test-runs/022/PLAYTEST-REPORT.md.
23Hackedsolved7m49s7m49s; loopback proxy plus Jinja template execution; wrapper exit-recording error after solve Local evidence: .author/test-runs/023/PLAYTEST-REPORT.md.
24Hacked-V2solved~4mabout 4 min; loopback proxy plus Jinja template execution Local evidence: .author/test-runs/024/PLAYTEST-REPORT.md.
25Shikanoko nokonoko koshitantan!solved9m13sSolved in 9m13s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/025-whitebox/author-validation.json.
26ez-websolved1m22s82 s; admin-primed nginx cache leaks flag; target-only Playwright fix Local evidence: .author/test-runs/026/PLAYTEST-REPORT.md.
27multiplicationsolved8m06s8m06s; reflected JavaScript reads admin cookie via rate-limit bit oracle (alternate exfil) Local evidence: .author/test-runs/027/PLAYTEST-REPORT.md.
28hypocritesolved3m13sSolved in 3m13s on the current white-box handout. Boundary: workspace-enforced. Local evidence: .author/test-runs/028-whitebox-repair1/author-validation.json.
29action-figuressolved7m30s7m30s; font write plus PHAR/Monolog chain; target-only APT repair Local evidence: .author/test-runs/029/PLAYTEST-REPORT.md.
30expath1solved0m47s47 s; XPath injection selected live XML flag Local evidence: .author/test-runs/030/PLAYTEST-REPORT.md.
31literversolved2m17s2m17s; SQL UNION selected flag table Local evidence: .author/test-runs/031/PLAYTEST-REPORT.md.
32oscommandsolved0m47s47 s; newline bypassed command filter; target-only APT repair Local evidence: .author/test-runs/032/PLAYTEST-REPORT.md.
33unlimitedsolved0m58s58 s; unthrottled OTP reset took over admin account Local evidence: .author/test-runs/033/PLAYTEST-REPORT.md.
34web-jawatsolved~2mabout 2 min; forged admin JWT with guessed signing key Local evidence: .author/test-runs/034/PLAYTEST-REPORT.md.
35TobTobiTobTobTobiTobTobTobiTobTobTobalisolved~2mabout 2 min; Jinja SSTI bypassed substring filter and read runtime flag Local evidence: .author/test-runs/035/PLAYTEST-REPORT.md.
36ingfokanlokasitakjilsolved1m07s67 s; MongoDB operator injection opened Max’s protected post Local evidence: .author/test-runs/036/PLAYTEST-REPORT.md.
37php-deserialization-v2solved2m27s2m27s; PHP deserialization reference alias reached callable chain Local evidence: .author/test-runs/037/PLAYTEST-REPORT.md.
38redirectionsolved0m59s59 s; YouTube warning echoed flag before intended webhook redirect Local evidence: .author/test-runs/038/PLAYTEST-REPORT.md.
39es-es-ti-aisolved2m10s2m10s; saved note path traversal rendered HTML as Pug and read flag Local evidence: .author/test-runs/039/PLAYTEST-REPORT.md.
40greter-nonce-leaksolved39m51sSolved in 39m51s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/040-whitebox/author-validation.json.
41jwt-aes-gcmsolved1m43sSolved in 1m43s: shortened AES-GCM tag plus ciphertext role flip. Local evidence: .author/test-runs/041/PLAYTEST-REPORT.md.
42lesser-nonce-leaksolved12m27sSolved in 12m27s: CSS nonce extraction plus nonce-authorized srcdoc script. Local evidence: .author/test-runs/042/PLAYTEST-REPORT.md.
43magic-collisionsolved1m20sSolved in 1m20s: PHP array type errors and data stream. Local evidence: .author/test-runs/043/PLAYTEST-REPORT.md.
44prototypesolved0m45sSolved in 45s: prototype pollution of Object.prototype via favorite=proto. Local evidence: .author/test-runs/044/PLAYTEST-REPORT.md.
45sequelsolved1m08sSolved in 68s: case-variant Go JSON binding bypass plus SQL UNION. Local evidence: .author/test-runs/045/PLAYTEST-REPORT.md.
46[Holo-Curl[Fix]](https://github.com/TCP1P/TCP1P-Playground-365-2025/tree/2dc0977efe69dddc12d218f4f3b8e2fcc806ba94/Web/Holo-Curl%5BFix%5D)blocked-environment~7m (unstable target; not a valid solve time)Flag exploit demonstrated in 7m, but php-fpm restarted repeatedly (39 observed); unstable target. Local evidence: .author/test-runs/046/PLAYTEST-REPORT.md.
47bfcachesolved5m45sSolved: first flag 5m45s from launch; full 60m external window. Public caching notes assisted the intended history/cache route. Local evidence: .author/test-runs/047-whitebox-60m-openweb1/author-validation.json, .author/test-runs/047-whitebox-60m-openweb1/author-review.md.
48missing_xsssolved2m34sSolved in 2m34s on the current white-box handout. Boundary: workspace-enforced. Local evidence: .author/test-runs/048-whitebox-repair1/author-validation.json.
49note-fssolved1m15sSolved in 75s: URL-encoded traversal plus Bun NUL truncation. Local evidence: .author/test-runs/049/PLAYTEST-REPORT.md.
50ledger-forgesolved≤5m12sSolved in <=5m12s: JWT alg confusion plus admin Jinja SSTI; local dynamic flag emulation. Local evidence: .author/test-runs/050/PLAYTEST-REPORT.md.
51koth-thronesolved1m40sSolved in 1m40s: SQL injection admin login wrote issued King-of-the-Hill token; local platform emulation. Local evidence: .author/test-runs/051/PLAYTEST-REPORT.md.
52owasp-portalsolved0m52sSolved in 52s: normal-user read of admin note ID 1 (local dynamic flag emulation). Local evidence: .author/test-runs/052/PLAYTEST-REPORT.md.
53perteam-portalsolved<1m active; 7m15s elapsedStatic flag on page; active work under one minute, 7m15s wall due runner idle gap. Intentional container-platform demo: original description tells players to find the flag on the page. Not an exploitation difficulty result. Local evidence: .author/test-runs/053/PLAYTEST-REPORT.md.
54shared-portalsolved0m07sSolved in 7s: static flag displayed on public page; no exploitation. Intentional container-platform demo: original description tells players to find the flag on the page. Not an exploitation difficulty result. Local evidence: .author/test-runs/054/PLAYTEST-REPORT.md.
55challenge-kepepetdeferred— (latest test deferred)Rust application source unavailable; author requested no new test or reconstruction. Local evidence: .author/test-runs/055/PLAYTEST-REPORT.md.
56kutasolved31m21sSolved in 31m21s: qutebrowser startup command injection plus timing oracle. Local evidence: .author/test-runs/056/PLAYTEST-REPORT.md.
57lulsolved3m55sSolved in 3m55s: encoded static-path confusion executes reflected script in bot. Local evidence: .author/test-runs/057/PLAYTEST-REPORT.md.
58pecelblocked-handout— (no valid solve run)declared ZIP includes .git repository history
59presswordsolved2m05sSolved in 2m05s: WordPress token-destructor deserialization to command execution. Local evidence: .author/test-runs/059/PLAYTEST-REPORT.md.
60yo-nda-tausolved2m13sSolved in 2m13s: Node VM escape; shorter this.constructor path may be unintended. Local evidence: .author/test-runs/060/PLAYTEST-REPORT.md.
61Your-Namesolved2m02sSolved in 2m02s: JavaScript hex escapes bypass HTML encoding, bot cookie exfil. Local evidence: .author/test-runs/061/PLAYTEST-REPORT.md.
62Your-Name-Revengesolved1m23sSolved in 83s: window.name HTML injection after bot cross-origin navigation. Local evidence: .author/test-runs/062/PLAYTEST-REPORT.md.
63Crew DBblocked-environment— (no valid solve run)No solver run: MySQL 5.7 initialization repeatedly exited 137 before app startup. Local evidence: .author/test-runs/063/PLAYTEST-REPORT.md.
64Malas Membuat Frameworksolved3m21sSolved in 3m21s on the current white-box handout. Boundary: workspace-enforced. Local evidence: .author/test-runs/064-whitebox-repair1/author-validation.json.
65exxxxedsolved6m58sSolved in 6m58s: JavaScript replacement expansion bypassed sanitizer, bot cookie exfil. Local evidence: .author/test-runs/065/PLAYTEST-REPORT.md.
66pdf-generatorsolved3m40sSolved in 3m40s: TeX file dump split around PDF text filter. Local evidence: .author/test-runs/066/PLAYTEST-REPORT.md.
67solid-blogsolved3m29sSolved in 3m29s: SQL injection plus bot cookie exfil through rendered post. Local evidence: .author/test-runs/067/PLAYTEST-REPORT.md.
68solid-solid-solidsolved3m34sSolved in 3m34s: URL fetch overwrote app.py, memory-triggered reload exposed flag. Local evidence: .author/test-runs/068/PLAYTEST-REPORT.md.
69nonexistentsolved8m06sSolved: first flag 8m06s from launch; full 60m external window. Public PHP article assisted SQLite native-extension loading. Post-solve outage required configuration recovery. Local evidence: .author/test-runs/069-whitebox-60m-openweb1/author-validation.json, .author/test-runs/069-whitebox-60m-openweb1/author-review.md.
70balakatumtum-fans-clubssolved4m15sSolved in 4m15s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/070-whitebox/author-validation.json.
71http3 0daysolved1m07sSolved in 1m07s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/071-whitebox/author-validation.json.
72super revengesolved5m58sSolved in 5m58s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/072-whitebox-v3/author-validation.json.
73file-not-found-v2-rsctf-dynamicsolved6m02sSolved: first flag 6m02s from launch; full 60m external window. Public challenge writeup/author solver assisted Apache/PECL execution. Local evidence: .author/test-runs/073-whitebox-60m-openweb1/author-validation.json, .author/test-runs/073-whitebox-60m-openweb1/author-review.md.
74new-gadgetsolved5m43sSolved: first flag 5m43s from launch; full 60m external window. Public author solver assisted the Mongoose/Sift gadget; one manual app reset before capture. Local evidence: .author/test-runs/074-whitebox-60m-openweb1/author-validation.json, .author/test-runs/074-whitebox-60m-openweb1/author-review.md.
75backtothefuturesolved2m05sSolved in 2m05s: exposed Git history yielded older flag-bearing PHP blob. Local evidence: .author/test-runs/075/PLAYTEST-REPORT.md.
76uaulsolved2m14sSolved in 2m14s: case-sensitive admin-role mismatch and template filter bypass. Local evidence: .author/test-runs/076/PLAYTEST-REPORT.md.
77umasolved19m43sSolved in 19m43s: file URL read, Tomcat partial PUT/session store, Groovy side effect. Local evidence: .author/test-runs/077/PLAYTEST-REPORT.md.
78NativeNotesolved4m34sSolved in 4m34s on the current white-box handout. Boundary: procedural. Local evidence: .author/test-runs/078-whitebox/author-validation.json.
79my imaginary dreamsolved24m23sSolved in 24m23s on the current white-box handout. Boundary: workspace-enforced. Local evidence: .author/test-runs/079-whitebox-recheck3/author-validation.json.

Share this note

Share:

Tip: for Facebook and LinkedIn, use Copy first, then paste when the platform opens.

Back to all notes