Step 328. Competing in an International CTF — The Global Competition Experience: Seeing the World’s Ceiling

Step 328. Competing in an International CTF — The Global Competition Experience: Seeing the World’s Ceiling

Level 4 — Professional | Difficulty ★★★★★ | Estimated time: 2+ days (timezone strategy + completing a 48-hour competition + results recording)

Prerequisites: the domestic-competition cycle of Steps 324–326, Step 327’s gap-analysis frame. Team-channel operations and handoff rules must already be second nature.

  • What you need: one major international competition picked on CTFtime (Google CTF, DEF CON Qualifiers, Plaid CTF, etc.), a team channel, a shift schedule, and Step 327’s gap-analysis template. The timezone-calculation script is a measured tool you run with your competition’s schedule; every competition scene and ranking is a screen example.
  • Caution: this competition’s goal is not winning — it’s finishing, and the firsthand feel of "what the world’s best produce." Not lowering the goal — setting it accurately.
  • ⚠️ All exercises in this chapter are for your own lab and legal platforms only. Applying them to unauthorized systems is a crime. Read and follow the competition rules (team size, no external collaboration) before the start.

Having experienced the domestic finals, your next stage is the world. Google CTF, DEF CON Qualifiers, Plaid CTF — these competitions are a different dimension of difficulty. A single problem is research-grade, and world-ranking teams run full power for 48 hours. Even teams that placed high domestically normally pass through a zero-solve stretch here.

And that is exactly this competition’s value. The real harvest is feeling firsthand "what the world’s best produce." Today you learn the operations that maximize that harvest — fighting the timezone, English communication, the mental operations for surviving the zero-solve stretch, and securing the material the competition leaves behind.


1. Learning Objectives

By the end of this chapter, you will be able to:

  • Explain the differences between international and domestic competitions (scale, difficulty, timezone, language) and build a countermeasure for each
  • Select a competition on CTFtime, calculate the timezone difference, and build a sleep/shift plan
  • Write a 48-hour shift schedule that keeps "someone always in progress"
  • Secure the first points with the discernment to pick warmup problems, and manage the zero-solve stretch
  • Record the rank, solutions, and unsolved problems after the end, securing them as material for the next Step

2. Background Knowledge — Today’s Tools and Concepts

Today’s Tools at a Glance

Category Details
Language/environment Python 3 (timezone calc & shift schedule), CTFtime, the competition platform, team channel, English Write-ups
Today’s command python step328_timezone.py — convert UTC schedules to your local time and generate the shift schedule
Concepts needed Timezone strategy, shift work, warmup selection, zero-solve-stretch management, English communication
Today’s deliverable A timezone & shift plan + competition log + rank record + an archive list of unsolved problems

2-1. What’s Different About International Competitions — Four Differences

Let’s organize the differences between domestic majors and international majors along four axes.

Axis Domestic majors (CODEGATE, CCE) International majors (Google CTF, DEF CON Quals)
Scale Dozens to hundreds of teams Hundreds to thousands of teams, every world-ranking team present
Difficulty A finals cutline structure A single problem is research-grade — many teams finish with zero solves
Timezone Your daytime hours US/Europe-based — often starts in your early morning
Language Announcements and problems in your language Entirely in English — problems, announcements, channels

Of the four differences, only difficulty is one skill can’t cross. Scale can be ignored, and timezone and language are offset by preparation. So today’s operations focus on timezone and language — the skill fight can wait until skill grows; today’s job is creating "the conditions where that skill is maximally displayed."

2-2. Timezone Strategy — A Competition Is Run on Biological Time, Not Local Time

Suppose a 48-hour competition starts at 3 AM your time. There are three options — ① stay up all night to catch the 3 AM start, ② sleep and join after waking, ③ sleep early before the start and join the battle at dawn. The answer is ③ — "sleep 6 hours before the start, then join at dawn".

The reason is simple. A competition’s first 6 hours are the highest-value stretch — full-problem enumeration and warmup harvesting — and the question is whether you spend that stretch with "a brain awake for 24 hours" or "a brain fresh from sleep." Choose ① and the competition’s middle overlaps with your biological low point. ③ pulls that low point ahead of the competition’s start.

And 48 hours is not one person’s time. Build a shift schedule so someone is always in progress — the tool in 3-3 builds it for you. The shift schedule’s fairness rule is not dumping the all-night stretch (00:00–06:00 local) on one person.

2-3. English Communication — Precision, Not Fluency

Problem descriptions, announcements, and post-competition Write-ups at international competitions are all in English. What’s needed is not fluent English but precise technical English.

Here are the responses for the three scenes you’ll actually face. ① Reading problem descriptions — don’t skip unknown words; check whether they’re technical terms. Competition English draws on a limited vocabulary, and this book’s terms appear verbatim. ② Asking the organizers — questions on competition channels follow a template: four sentences, "the situation / expected behavior / actual behavior / what I tried." ③ Reading Write-ups — Step 327’s gap analysis expands directly into English. World-ranking teams’ Write-ups abbreviate more than domestic ones, but the structure is the same.

Organizer-inquiry template (screen example):
> Challenge: [problem name]
> Expected: [the behavior you expected from the problem description]
> Actual: [the behavior actually observed — verbatim error message]
> Tried: [what you've already tried]
> Is the challenge environment working as intended?

The last sentence is the key — asking not "tell me the solution" but "is the environment working as intended?" is the rule of competition culture. Hint requests get ignored; environment-anomaly reports get answers.

2-4. The Zero-Solve Stretch — The Rite of Passage of International Competitions

Most teams’ first international major passes through a stretch — hours of solving nothing at all. The self-loathing of a zero-solve stretch can last the whole 48 hours, and surviving that stretch is itself this Step’s training.

The way to survive is redefinition. Rewrite this competition’s goal as three things instead of rank. ① Even one warmup problem — international competitions have opening warmups too. The discernment to sweep every problem and quickly select "problems we can go for" gets used here. ② The experience of touching the world’s best problems firsthand — even unsolved, seeing a problem’s structure, attempting, and recording where you stalled is itself training. ③ Securing material to reproduce — when the competition ends, top teams’ Write-ups are published. Today’s unsolved problems become the next Step’s new-technique textbooks.

If these three remain in your hands in the moments of self-loathing, that time was not waste — it was mining.


3. Follow Along

3-1. Selecting the Competition — How to Choose on CTFtime

Check upcoming major competitions on CTFtime and match them to the team’s schedule. Four selection criteria.

International competition selection checklist (screen example):
[ ] Weight — higher CTFtime weight means top teams flock and problem quality is validated
[ ] Format — Jeopardy? Duration 24/36/48 hours?
[ ] Timezone — when is the start time (UTC) in your local time? (calculated in 3-3)
[ ] Team schedule — which of the 48 hours can each team member cover?

For your first one or two, a competition one tier below the top-weight majors makes a good entry. Soak in a major competition’s atmosphere while stacking your first completion experience on a stage where warmup problems are a bit more solvable.

3-2. Timezone Strategy — Plan Sleep First

Once the competition is confirmed, plan sleep before problems. Apply 2-2’s principle to your competition.

Timezone-strategy example (screen example):
- Competition start: Saturday 3:00 AM (local time), 48 hours
- Strategy: sleep Friday 21:00 → wake Saturday 02:30 → join from the 03:00 start
- Shifts: 3 people on 8-hour rotations; the all-night stretch (shifts starting 00–06) capped at one per person
- Meetings: 15-minute handoff at each shift start, 30-minute full meeting every 12 hours

Why sleep comes first — only once sleep is fixed can the shift schedule stand, and only once the shift schedule stands can "who covers which problems when" be assigned. At an international competition, sleep is not rest — it’s the grid of the operation.

3-3. Timezone Calculation and Shift-Schedule Generation — Precision by Tool

Calculate timezones by feel and you’ll be off by a day (the date-line problem). Save as step328_timezone.py — it uses only the standard library’s zoneinfo.

# step328_timezone.py — international CTF timezone calc + shift-schedule generator
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo

UTC = ZoneInfo("UTC")
KST = ZoneInfo("Asia/Seoul")

# Competition info (replace with yours)
EVENTS = [
    ("Google CTF (example)",        datetime(2026, 6, 20, 18, 0, tzinfo=UTC), 48),
    ("DEF CON Qualifiers (example)", datetime(2026, 5, 16, 0, 0, tzinfo=UTC),  48),
    ("Plaid CTF (example)",          datetime(2026, 4, 11, 1, 0, tzinfo=UTC),  36),
]

print("=== International CTF Timezone Calc (UTC -> local time) ===n")
for name, start_utc, hours in EVENTS:
    s = start_utc.astimezone(KST)
    e = (start_utc + timedelta(hours=hours)).astimezone(KST)
    wd = "MonTueWedThuFriSatSun"[s.weekday()*3:s.weekday()*3+3]
    print(f"{name}")
    print(f"   start: {s:%Y-%m-%d %H:%M} ({wd}) local  /  end: {e:%m-%d %H:%M} local  ({hours}h)")
    # compute the overlap with the local all-night stretch (00:00–06:00)
    cur, night = s, timedelta(0)
    while cur < e:
        nxt = min(cur + timedelta(minutes=30), e)
        if cur.hour < 6:
            night += nxt - cur
        cur = nxt
    print(f"   hours overlapping local 00:00–06:00: {night.seconds//3600}h {night.seconds%3600//60}mn")

# 48-hour competition, 3-person shift-schedule example
print("=== 48h Competition, 3-Person Shift Schedule (local time) ===")
start = datetime(2026, 6, 21, 3, 0, tzinfo=KST)   # assuming a Saturday 3 AM start
members = ["A", "B", "C"]
shift = timedelta(hours=8)
cur = start
for i in range(6):
    who = members[i % 3]
    print(f"   {cur:%m-%d %H:%M} ~ {(cur+shift):%m-%d %H:%M}  on duty: {who}"
          + ("   <- all-night stretch" if 0 <= cur.hour < 6 else ""))
    cur += shift
print("nrule: the all-night stretch (shifts starting 00:00–06:00) is taken fairly, once each.")

Here’s the measured output from running it:

=== International CTF Timezone Calc (UTC -> local time) ===

Google CTF (example)
   start: 2026-06-21 03:00 (Sun) local  /  end: 06-23 03:00 local  (48h)
   hours overlapping local 00:00–06:00: 12h 0m

DEF CON Qualifiers (example)
   start: 2026-05-16 09:00 (Sat) local  /  end: 05-18 09:00 local  (48h)
   hours overlapping local 00:00–06:00: 12h 0m

Plaid CTF (example)
   start: 2026-04-11 10:00 (Sat) local  /  end: 04-12 22:00 local  (36h)
   hours overlapping local 00:00–06:00: 6h 0m

=== 48h Competition, 3-Person Shift Schedule (local time) ===
   06-21 03:00 ~ 06-21 11:00  on duty: A   <- all-night stretch
   06-21 11:00 ~ 06-21 19:00  on duty: B
   06-21 19:00 ~ 06-22 03:00  on duty: C
   06-22 03:00 ~ 06-22 11:00  on duty: A   <- all-night stretch
   06-22 11:00 ~ 06-22 19:00  on duty: B
   06-22 19:00 ~ 06-23 03:00  on duty: C

rule: the all-night stretch (shifts starting 00:00–06:00) is taken fairly, once each.

How to read it: look at three things. ① Even with the same 48-hour length, the felt experience differs completely by start time — Google CTF (example) starts Sunday 3 AM local, putting your biological low point right after the start, while DEF CON Quals (example) starts Saturday 9 AM, giving you a full daytime first day. This is why the start time is the strategy’s first input value. ② The "all-night overlap" number — a 48-hour competition includes 12 hours of late night no matter when it starts. What can’t be avoided must be distributed. ③ The shift schedule’s structure — in an 8-hour, 3-person rotation, A ends up taking the all-night stretch (the 03:00-start shift) twice in a row. A four-person team distributes it, but with three it’s unavoidable — in that case, compensate with the rule "the shift after an all-nighter is always a sleep block." Run it with your competition’s schedule and team size.

3-4. Competing — Warmup Selection and Passing the Zero-Solve Stretch

Once the competition starts, operations follow the same skeleton as domestic competitions — initial full enumeration, engagement in score-efficiency order, handoff rules. What differs is the selection criterion. At an international competition, the discernment to find "problems we can go for" is the first battle.

International competition progress log (screen example):
[03:00] Start. Enumerate all problems — 22 problems. The pressure of scale arrives first
[03:50] Enumeration done. 2 warmup-marked problems + 1 candidate with a rising solve count
[05:20] warmup misc solved (+50). Zero-solve escape — our team name on the scoreboard
[09:00] Everyone engages the second-wave candidates — all confirmed as top-teams-only problems
[14:00] Progress on a web problem — up to an auth bypass. Then stalled at the next chain link
[19:00] Shift meeting — still 1 solve. Goal reconfirmed: "one more solve or material secured"
[27:00] Decision to abandon the web problem — all attempts archived, switch to a rev problem
[40:00] Partial stages of the rev problem cleared — short of the flag, progress recorded
[48:00] End. Final: 1 solve, top-30% band recorded

How to read it: the "abandonment decision" at hour 27 of this log is the international competition’s core skill. If the domestic handoff rule was "2 hours," the international abandonment rule must be stricter — because these problems have no visible bottom. But abandonment is not deletion. Abandonment with every attempt archived is material secured — this is 2-4’s redefinition ("mining") implemented as behavior.

3-5. After the End — Securing Material and Recording

The post-event procedure is the same as for domestic competitions, with one thing more important — archiving unsolved problems.

Post-event record template (screen example):
- Final rank / solve count / points earned:
- Solved problems: four-line records (name, technique, clue, time)
- Attempted problems: name, progress point, stall point, next hypothesis — files & screenshots included
- Problems never opened: at least a list (for cross-checking when collecting Write-ups)
- Timezone evaluation: was the shift schedule kept? How productive was the all-night stretch?
- English communication: expressions that blocked you, records of organizer inquiries

These records are the raw material for the next chapter (Step 329, new-technique analysis). When top teams’ Write-ups are published, the correct way to read international Write-ups is cross-checking them against your "attempted problems" list — solutions to problems you’ve touched read at a different speed.


4. Missions & Exercises

Mission — Complete an International Competition and Secure the Material

  1. Pick a competition on CTFtime with the selection checklist (3-1) and confirm the team’s schedule.
  2. Put the competition’s real start time (UTC) and duration into step328_timezone.py to compute the local schedule and all-night overlap, and build a shift schedule matching your team size.
  3. Fix the timezone strategy (3-2) — including the pre-start sleep plan.
  4. Complete the 48 hours per the shift schedule — warmup selection, redefinition through the zero-solve stretch, archiving all attempts on abandonment.
  5. Complete the post-event record template (3-5), and archive unsolved problems’ files and attempt history as material for the next Step.

Exercises

Exercise 1. Among the international competition’s four differences (scale, difficulty, timezone, language), distinguish "what preparation offsets" from "what only skill crosses," and explain the implication for preparation strategy.

Exercise 2. For a competition starting at 3 AM, explain why "sleeping 6 hours before the start, then joining at dawn" beats "staying up all night to start," through the relationship between the competition’s valuable stretches and biological rhythm.

Exercise 3. Explain why the organizer-inquiry template’s (2-3) last sentence is "is the environment working as intended?" rather than "give me a hint," as a rule of competition culture.

Exercise 4. Explain why the hour-27 "abandonment decision" in 3-4’s screen example is rational operations rather than defeat — together with how "archiving all attempts" transforms that decision’s value.


5. Model Answers & Completion Criteria

Mission Model Answer

Check against these verification criteria.

  1. Grounds for selection: are the four criteria — weight, format, timezone, team schedule — recorded? "Because it’s famous" is not grounds.
  2. Timezone accuracy: are the script output’s local-time conversion and all-night overlap reflected in the shift schedule — no trace of by-feel calculation (date-line errors, etc.)?
  3. Sleep first: is the sleep/wake plan written in the document before the shift schedule?
  4. Evidence of completion: does the competition log show shift handoffs across the time slots?
  5. Material completeness: does every attempted problem have "progress point, stall point, next hypothesis" archived, and is there a list even of problems never opened?

Exercise Answers

Answer 1. Timezone and language are offset by preparation; difficulty is crossed only by skill (scale is to be ignored). Timezone is covered by sleep planning and shift schedules, language by technical-English reading and the inquiry template — both completable before the competition. Difficulty, by contrast, can’t be changed on competition day and is crossed only by accumulated everyday training. The implication is how preparation time is allocated — rather than doing technical training until the day before, spend preparation on eliminating the offsettable variables (timezone, language, operations), and face difficulty with the attitude of "measuring today’s skill as it is." Leaking points through offsettable variables is the most regrettable kind of defeat.

Answer 2. A competition’s first 6 hours are the highest-expected-value stretch — full enumeration and warmup harvesting, the golden time when the problem list is fixed and the easy-problem race happens. Starting after an all-nighter spends this stretch with "a brain already awake 20+ hours," and the competition’s middle (hours 24–30) collides with your biological low point. Sleeping 6 hours before the start moves that low point ahead of the competition, so the golden time is spent with a brain fresh from sleep. Even with the same 48 hours, "which stretch you assign your clear brain to" changes results — sleep is not rest but a strategy of stretch allocation.

Answer 3. Under CTF rules, hints must be equal for all participants, so individual hint requests are ignored or declined — that’s not rudeness but fairness maintained. By contrast, "is the environment working as intended?" is a question about the game’s premise. If a server is down or a problem file is corrupted, that’s not one team’s handicap but a competition incident, and the organizers have a duty to answer. The template’s four sentences (situation, expected, actual, tried) are a format showing the question is not a "bothersome hint request" but a "verifiable environment report." Understanding the culture is also skill — the difference between a question that gets answered and one that gets ignored comes not from English ability but from understanding this rule.

Answer 4. International problems have no visible bottom, so unlimited investment in one problem burns every other problem’s opportunity — empirically, a problem "still unsolved" at hour 27 is unlikely to crack by hour 48, and meanwhile you’ve forfeited possible progress elsewhere. The abandonment rule is the device managing this opportunity cost. And "archiving all attempts" transforms that abandonment from defeat into investment — the archived attempts become cross-checking material when reading top-team Write-ups afterward (Step 327’s frame), and in Step 329’s new-technique analysis, "how far did we get?" determines how deeply you understand the technique. Abandonment without records is loss; abandonment with records is material converting into next competition’s skill.

Completion Criteria Checklist

  • [ ] I selected a competition on CTFtime by the four criteria (weight, format, timezone, schedule)
  • [ ] I confirmed the local schedule and all-night overlap with the timezone script
  • [ ] I fixed the sleep plan first and built the shift schedule on top of it
  • [ ] I applied fair distribution of the all-night stretch (or the 3-person-team compensation rule)
  • [ ] I attempted the first solve through warmup selection and managed the zero-solve stretch by redefinition
  • [ ] I completed the 48 hours per the shift schedule and recorded the rank
  • [ ] I archived every attempted problem’s progress, stall points, and next hypotheses
  • [ ] I completed the post-event records, securing them as material for the next Step (new-technique analysis)

6. Common Pitfalls & Fixes

Wall 1. I miscalculated the timezone and lost a whole day

Symptom: you believed "Saturday 9 PM start," then realize after the competition began that it was Friday 9 PM.

Cause: the classic accident of doing the UTC→local date change by hand — UTC Friday 12:00 is local Friday 21:00 (UTC+9), but UTC Friday 18:00 is local Saturday 03:00.

Fix: never calculate timezones by hand — machine-convert with zoneinfo like 3-3’s script. And stack three devices. ① Register the "local time" display the competition platform gives you directly into your calendar (platforms usually display in the browser’s timezone). ② Paste the conversion result into the team channel so every member cross-checks it. ③ Alarms 24 hours and 1 hour before the start. A timezone accident is not a skill problem — it’s a missing double-check problem.

Wall 2. zoneinfo can’t find the timezone

Symptom: you ran it on Windows and got this error.

zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key Asia/Seoul'

Cause: Windows has no IANA timezone data, so this happens when Python can’t find timezone info on the system (measured — a Windows environment without the tzdata package).

Fix: install the timezone-data package with pip install tzdata. Python’s official documentation also recommends this package on Windows. In an offline environment, substitute with manual calculation — since KST is fixed at UTC+9, modify the script to add timedelta(hours=9).

Wall 3. The problems’ English is a wall — machine translation comes out weird

Symptom: machine translation mangles technical terms (e.g., "padding oracle" rendered as something about "padding prophecies").

Cause: technical English is a set of proper nouns, and general translation models corrupt it.

Fix: change the translation order — leave technical terms in the original and translate only the sentence structure. Pin a glossary in the team channel — the terms you learned in this book (oracle, primitive, gadget, sandbox escape, etc.) appear verbatim. And here’s this chapter’s hidden harvest — a few international competitions and technical-English reading grows on its own. Record the time you spent reading at the first competition, and measure your growth by how much it shrinks at the next.

Wall 4. The whole team collapses at once mid-48-hours

Symptom: on the second afternoon, the shift schedule falls apart and a gap opens where nobody is working any problem.

Cause: the shift schedule existed but had no "enforcement device" — fatigue accumulation skipped handoffs, and the skips created the gap.

Fix: three enforcement devices for shifts. ① No clocking out without a handoff — the previous member rests only after the next member completes "handoff document confirmed." ② Gap monitoring — a rule that anyone calls the on-duty member if the team channel shows no activity for 30 minutes. ③ Pre-agreed motivation — agree on 2-4’s redefinition out loud before the competition: "Our goal is completion and material. Even 1 solve is success." Mid-competition collapse mostly starts from a collapse of meaning before stamina — pre-agreeing the meaning is the strongest device.

Wall 5. We didn’t get a single solve at the international competition — was competing meaningless?

Symptom: 48 hours completed, 0 solves. Heavy self-loathing across the team.

Cause: at international majors, zero-solve teams are a large share of the field — this is not failure but the competition’s difficulty distribution.

Fix: re-read 2-4’s redefinition and check the last two completion-criteria items — if "archive every attempted problem’s records" and "secure material for the next Step" are done, this competition’s goal was achieved. And confirm one fact — even at 0 solves, having touched the problems differs from never having seen them. When top-team Write-ups for the problems you attempted get published, those solutions will read at a speed different from other readers’. That difference is the skill this competition leaves behind. The rank stays on CTFtime; the material stays with the team.


7. Summary

Today’s Concepts

Concept One-line explanation
The 4 international differences Scale, difficulty, timezone, language — separate the offsettable from the skill-side
Timezone strategy Sleep first, shift schedule on top — move the biological low point outside the competition
8-hour shift work Someone always in progress — fair distribution of the all-night stretch is the rule
Warmup selection The discernment to find "problems we can go for" — the first battle
Zero-solve-stretch management Mental operations that endure through redefinition (completion, experience, material)
Technical English Precision, not fluency — keep terms in the original + the inquiry template

Today’s Tools & Commands

Tool/command What it does
python step328_timezone.py UTC→local conversion, all-night overlap calculation, shift-schedule generation
Selection checklist Four criteria: weight, format, timezone, team schedule
Organizer-inquiry template Situation, expected, actual, tried + the environment-check question
Post-event record template Rank, solutions, attempt history, timezone evaluation, English notes
Handoff enforcement devices Clock-out only after document confirmation · gap monitoring · pre-agreed meaning

The Core Instinct

The international competition’s first harvest is not points — it’s an update of your standards. After seeing what the world’s best do in 48 hours, your definition of "good" changes. That update hurts, but it’s necessary — only a team that knows the domestic ceiling is the world’s floor can design the next staircase.

And remember the material you archived today — attempt history, stall points, and the world-ranking teams’ Write-ups about to be published. In Step 329’s new-technique analysis, this material transforms into "this year’s textbook of the latest attack techniques." An international competition lasts 48 hours, but the learning it brings continues for weeks.


Once every box is checked, Step 328 is complete.