어떤 수업을 찾고 있나요?

예: PowerShell, 네트워크, XSS, Step 138

전체 커리큘럼 둘러보기 →

CTF · 워게임

Step 303. ★ Level 3 종합 평가: 최근 3개 대회 득점 분석 + Level 4 계획 — 데이터로 닫고 설계로 연다

Step 303예상 실습 시간 · 2일 (자격 검증 + 득점 분석 + Level 4 계획 문서)

Level 3 — CTF 실전과 공격 스킬 심화 | 난이도 ★★★☆☆ | 예상 소요 시간 2일 (자격 검증 + 득점 분석 + Level 4 계획 문서)

전제: Step 176~302를 마쳤습니다. 이 챕터는 새 기술을 배우지 않는 Level 3의 졸업 심사이자, 전문가 구간의 설계도입니다.

  • 준비물: 열두 번의 대회 로그와 회고록, Write-up 저장소, 노트(또는 빈 문서), 그리고 하루의 넉넉한 시간.
  • 주의: 오늘은 "측정하는 날"입니다. 감이 아니라 기록으로 자기 실력을 평가하고, 그 데이터 위에 다음 1년을 설계합니다.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다.

Step 175에서 Level 2를 한 장의 표로 닫았던 것처럼, 오늘은 Level 3를 데이터로 닫습니다. 다만 규모가 다릅니다 — 이번에는 열두 번의 실전 대회, 다섯 전문 분야, 수십 대의 실전 머신이 쌓인 기록을 다룹니다. 이 기록들이 말해 주는 것은 하나의 숫자가 아니라 구조입니다. 어느 분야에서 점수가 나오는가, 시간은 어디로 새는가, 상위 팀과의 거리는 얼마인가.

그리고 그 구조 위에서 Level 4로 가는 다리를 놓습니다. OSCP, 버그바운티, 1-day 분석, 국내외 대회 — 전문가 구간의 어느 길을, 어떤 순서로, 언제부터 걸을지. 오늘의 산출물은 Level 3의 졸업장이자 Level 4의 입장권, 두 가지입니다.


1. 학습 목표

이 챕터를 끝내면 다음을 할 수 있습니다:

  • Level 3 수료 자격 조건(대회 로그 12회, 회고록 12편, Hard급 Write-up 3편, 누적 Write-up 50개)을 증거와 함께 검증한다
  • Level 3 전체(Step 176~302)를 트랙별 "배운 것 지도"로 정리한다
  • 최근 3개 대회의 득점 구조를 분석해 분야별 득점률·시간 효율·추이를 산출한다
  • SWOT으로 자기 포지션을 정리하고 강점/약점을 문장으로 확정한다
  • Level 4 진입 계획(트랙 선택, 시작 시점, 1년 목표)을 문서로 수립한다

2. 배경 지식 — 오늘의 도구와 개념

오늘의 도구 한눈에 보기

구분 내용
언어·환경 노트와 문서 도구, 대회 로그 원본, 검증용 파이썬 스크립트 하나
오늘의 명령어 새 명령어 없음 — 분석은 로컬 파이썬 스크립트로 실측합니다
필요한 개념 자격 조건의 증거성, 득점 구조 분석(득점률/효율/추이/갭), SWOT, 진입 전략
오늘의 산출물 자격 검증표 + 배운 것 지도 + 3개 대회 분석 리포트 + SWOT + Level 4 계획 문서

2-1. 왜 데이터인가 — 감은 졸업 심사의 증거가 아니다

"이제 좀 하는 것 같다"는 감은 소중하지만, 심사의 증거는 기록입니다. 기록에는 감이 놓치는 것이 있습니다 — 순위가 아닌 득점의 구성이 그렇고, 한 대회가 아닌 궤적의 기울기가 그렇습니다.

오늘의 모든 산출물에는 규칙이 하나 있습니다 — 주장마다 로그의 좌표가 붙는다. "Web이 강해졌다"가 아니라 "Web 득점률 #10 71% → #12 75%, 시즌 평균 상위". 좌표 없는 문장은 오늘 문서에서는 초안으로만 존재합니다.

2-2. 자격 조건 — 졸업 심사의 네 가지 증거

Level 3 수료의 자격 조건은 네 가지입니다.

조건 증거 무엇을 증명하는가
최근 대회 12회 참가·득점 대회 로그 12건 실전의 반복 경험 — 한 판의 운이 아닌 실력
대회 회고록 12편 회고 문서 링크 경험을 지식으로 바꾸는 복기의 습관
Hard급 Write-up 3편 게시된 풀이 3편 고난도 문제의 독립 해결력
누적 Write-up 50개 저장소 카운트 설명 가능한 지식의 총량

네 조건은 각각 다른 근육을 봅니다 — 참가(실행), 회고(분석), Hard(심화), 누적(전달). 하나가 비어 있으면 그 근육은 아직 증명되지 않은 것입니다. 그리고 미리 말해 둡니다 — 미달이어도 괜찮습니다. 부족분을 보충할 기간을 정하고 평가를 재시도하면 됩니다. 졸업은 문을 닫는 것이 아니라 Level 4의 입장권을 받는 것입니다.

2-3. 득점 구조 분석 — 네 가지 지표

최근 3개 대회(#10~#12)의 로그에서 네 지표를 뽑습니다.

  • 분야별 득점률: 득점 ÷ 그 분야의 만점. 강점과 약점의 지도.
  • 시간 대비 효율: 득점 ÷ 투입 분. 같은 점수를 얼마나 싸게 얻는가.
  • 추이: 3개 대회에 걸친 변화 방향. 오르고 있는가, 정체인가.
  • 갭: 상위 팀과의 거리. 우리가 못 푼 문제를 그들은 풀었는가.

네 지표는 서로를 교정합니다. 득점률이 낮은데 효율도 낮으면 진짜 약점이고, 득점률은 낮지만 효율이 높으면 "배점이 적었을 뿐"인 착시입니다. 숫자 하나만 보고 결론 내리는 것이 이 분석의 유일한 함정입니다.

2-4. SWOT — 데이터를 포지션의 언어로

분석이 끝나면 SWOT 네 칸으로 옮깁니다. Level 3 규모에서의 SWOT은 이렇게 채웁니다.

  • S(강점): 득점률 상위 분야 — 여러분의 주력이 증명된 곳
  • W(약점): 득점률·효율이 동시에 낮은 분야 — 회피가 아니라 보강 대상
  • O(기회): 외부의 문 — 국내 대회 시즌, 버그바운티 프로그램, 팀의 확장
  • T(위협): 내부의 리스크 — 정체 위험, 흩어지는 팀, 동기의 소모

SWOT은 발명이 아니라 번역입니다. 2-3의 숫자가 S와 W를 채우고, Level 4의 지도(아래 2-5)가 O를 채웁니다. 숫자 없는 SWOT은 자기소개서가 되고, 숫자 있는 SWOT은 전략 문서가 됩니다.

2-5. Level 4의 지도 — 전문가 구간의 다섯 갈래

Level 4(Step 304~348)의 구조를 먼저 봅니다. 계획 문서 기준, 전문가 구간은 다섯 덩어리입니다.

덩어리 스텝 내용
OSCP 트랙 304~313 시험 이해, 연습 머신, 보고서 훈련, 모의시험, 실기 응시와 회고
버그바운티 314~319 제도 이해, 실서비스 정찰·탐색·검증, 제보서, 트리아지 대응
1-day 분석 320~323 패치 diff 분석, CVE 재현과 보고서 공개, 오픈소스 기여
대회 사이클 324~328, 336~340, 347 국내 예선·본선, 국제 대회, 우승 도전, 격차 분석
커리어·환원 329~335, 341~346, 348 지식 흡수 루틴, 멘토링·발표, 포트폴리오, 새 영역 탐색, 팀 리딩

오늘의 Level 4 계획은 이 지도 위에 세 가지를 놓는 것입니다 — 어느 덩어리부터인가(순서), 언제 시작하는가(시점), 1년 뒤의 나는 어떤 상태인가(목표). 순서의 실마리는 2-3의 분석에 있습니다 — 강점이 침투 실전(HTB 트랙)에서 증명됐다면 OSCP가 자연스러운 첫 덩어리이고, 웹에서 증명됐다면 버그바운티가 초기 수익화의 길입니다.


3. 따라 하기

3-1. 자격 조건 검증 — 증거 링크와 함께

양식을 열고 네 조건을 채웁니다. 각 행에는 반드시 증거의 위치(로그 파일, 저장소 링크, 카운트 스크린샷)가 붙습니다.

[Level 3 수료 자격 검증표] (화면 예시)
조건                          기준     실제     증거                          판정
대회 참가·득점                12회     12회     logs/ctf-01.md ~ ctf-12.md    통과
대회 회고록                   12편     12편     blog/retros/ (목록 캡처)      통과
Hard급 Write-up                3편      3편     blog/writeups/hard-* 3건     통과
누적 Write-up                 50개     51개     저장소 목록 + 카운트 캡처     통과

읽는 법: 판정 열에 "통과"가 아니라 "미달 — 보충 계획"이 들어가도 정상 작동입니다. 그 경우 계획의 형식은 "무엇을, 언제까지"입니다 — 예: "Hard급 Write-up 1편 부족 → 3주 내 Step 273 머신 재공략 풀이로 보충 후 재평가". 미달은 탈락이 아니라 일정이 됩니다.

보충 기간을 설계할 때의 규칙은 두 가지입니다. 하나, 보충은 부족한 조건만 노립니다 — 미달이 하나인데 Level 3 전체를 복습하는 계획은 과잉입니다. 둘, 재평가일을 달력에 넣습니다 — 날짜 없는 보충 계획은 영구 연기의 다른 이름입니다. 나머지 조건의 증거는 그대로 유효하므로, 재평가는 보충한 행만 다시 보면 됩니다.

3-2. 배운 것 지도 — Level 3 전체를 한 눈에

자격 확인이 끝나면, Step 176~302의 여정을 트랙별 지도로 정리합니다. 아래가 뼈대입니다 — 각 행의 "남은 것" 칸을 자기 기록으로 채우는 것이 과제입니다.

트랙 스텝 핵심 성취 남은 것
CTF 입문·분야 선정 176~181 5개 분야 맛보기, 주력/보조 분야 확정 (예: 주력 Web, 보조 Forensics)
기초 체력(ASM·BOF) 182~190 어셈블리, gdb, 버퍼 오버플로우, pwntools, 팀 결성
Web 심화 191~202 SQLi 고급~SSTI/SSRF/XXE/역직렬화, Webhacking.kr, 중간 점검
Pwn 트랙 203~214 쉘코드, ROP, ret2libc, Format String, GOT/힙 입문
Reversing 트랙 215~226 Ghidra/x64dbg 심화, 안티디버깅, 언패킹, 키젠, 중간 점검
Crypto 트랙 227~238 RSA 구현·공격, Cryptopals, AES 모드, 해시, DH/ECC
Forensics 트랙 239~250 파일 시그니처, 스테가노, pcap, 메모리·디스크 포렌식, 침해사고 분석
실전 플랫폼 251~278 THM/HTB 누적, AD, 피벗팅, Medium 졸업, Hard 복기, 속도 훈련
대회 사이클 279~302 12회 대회, 복기 블록 A/B/C, 전술 실험, 예선 대비 체계

읽는 법: 이 표의 "남은 것" 칸이 Level 4 계획의 재료고, "핵심 성취" 칸이 이력서와 포트폴리오의 재료입니다. Step 175의 대응표가 Level 2의 압축이었다면, 이 지도는 Level 3의 색인입니다 — 각 행 뒤에 수십 시간의 실습이 펼쳐져 있습니다.

"남은 것" 칸을 채우는 기준은 세 가지입니다. ① 시작했다가 놓은 것 — 예: "힙 익스플로잇은 입문에서 멈춤". ② 증명이 약한 것 — 배웠지만 대회나 머신에서 검증된 적 없는 것. ③ 흥미가 남은 것 — Level 4의 새 영역 탐색(클라우드/모바일/IoT)으로 연결할 후보. 세 기준 중 하나라도 해당하면 적습니다. 칸이 비어 있는 트랙은 "이 Level에서 할 만큼 했다"는 선언이므로, 비울 때도 이유를 괄호에 적어 두세요.

3-3. 최근 3개 대회 데이터 정리

#10, #11, #12의 로그에서 분야별 (득점, 만점, 투입 시간)을 모읍니다. 대회 로그에 만점이 없다면 "그 분야에서 열린 문제의 배점 합"으로 대체합니다. 정리 예시(가공 샘플 — 여러분은 로그의 실제 수로 채웁니다):

[3개 대회 원자료] (가공 샘플)
      참가팀/순위   Web        Pwn        Rev        Crypto     Forensics
#10   428 / 120    500/700    200/500    300/400    100/400    300/300
#11   365 /  98    600/700    300/500    300/400    200/400    300/300
#12   438 / 121    600/800    400/600    400/400    200/500    400/400
(각 셀: 득점/만점 — 투입 분은 로그의 착수·완료 시각에서 집계)

3-4. 분석 스크립트 실측 — 네 지표의 산출

정리한 데이터를 분석기(step303_analysis.py)에 넣습니다. 핵심 로직은 분야별 득점률, 추이, 효율의 계산입니다.

스크립트 전문 (step303_analysis.py)

"""step303_analysis.py — 최근 3개 대회 득점 구조 분석

대회 로그에서 집계한 원자료를 넣으면
분야별 득점률 추이, 순위 백분위, 시간 대비 효율을 계산한다.
'효율이 가장 낮은 분야'가 다음 시즌 훈련 재설계의 후보가 된다.
"""

# 대회별: (참가팀 수, 우리 순위, 분야별 (득점, 만점, 투입 분))
DATA = {
    "#10": (428, 120, {"Web": (500, 700, 190), "Pwn": (200, 500, 180),
                        "Rev": (300, 400, 170), "Crypto": (100, 400, 125),
                        "Forensics": (300, 300, 120)}),
    "#11": (365,  98, {"Web": (600, 700, 180), "Pwn": (300, 500, 200),
                        "Rev": (300, 400, 140), "Crypto": (200, 400, 110),
                        "Forensics": (300, 300,  90)}),
    "#12": (438, 121, {"Web": (600, 800, 200), "Pwn": (400, 600, 190),
                        "Rev": (400, 400, 150), "Crypto": (200, 500, 135),
                        "Forensics": (400, 400,  90)}),
}
FIELDS = ["Web", "Pwn", "Rev", "Crypto", "Forensics"]
COLS = [21, 32, 43]  # 득점률 값이 끝나는 열 위치


def rate(cid, field):
    got, full, _ = DATA[cid][2][field]
    return round(got / full * 100)


def trend(field):
    first, last = rate("#10", field), rate("#12", field)
    return "▲" if last > first else ("▼" if last < first else "―")


def main():
    print("=== 최근 3개 대회 득점 구조 분석 ===")
    print()
    print("분야            #10 득점률    #11 득점률    #12 득점률     추이")
    for f in FIELDS:
        line = f
        for cid, col in zip(("#10", "#11", "#12"), COLS):
            s = f"{rate(cid, f)}%"
            line += " " * (col - len(line) - len(s)) + s
        print(line + " " * 6 + trend(f))
    print()
    for cid, (teams, rank, fields) in DATA.items():
        total = sum(g for g, _, _ in fields.values())
        mins = sum(m for _, _, m in fields.values())
        pct = round(rank / teams * 100)
        eff = round(total / mins, 1)
        print(f"대회 {cid}: {teams}팀 중 {rank}위 (상위 {pct}%)  총 {total}점  효율 {eff}점/분")
    print()
    print("시간 대비 효율이 가장 낮은 분야(= 재설계 후보):")
    for cid, (_, _, fields) in DATA.items():
        worst = min(fields, key=lambda f: fields[f][0] / fields[f][2])
        eff = round(fields[worst][0] / fields[worst][2], 1)
        print(f"  {cid}: {worst} ({eff}점/분)")


if __name__ == "__main__":
    main()
python step303_analysis.py
=== 최근 3개 대회 득점 구조 분석 ===

분야            #10 득점률    #11 득점률    #12 득점률     추이
Web               71%        86%        75%      ▲
Pwn               40%        60%        67%      ▲
Rev               75%        75%       100%      ▲
Crypto            25%        50%        40%      ▲
Forensics        100%       100%       100%      ―

대회 #10: 428팀 중 120위 (상위 28%)  총 1400점  효율 1.8점/분
대회 #11: 365팀 중 98위 (상위 27%)  총 1700점  효율 2.4점/분
대회 #12: 438팀 중 121위 (상위 28%)  총 2000점  효율 2.6점/분

시간 대비 효율이 가장 낮은 분야(= 재설계 후보):
  #10: Crypto (0.8점/분)
  #11: Pwn (1.5점/분)
  #12: Crypto (1.5점/분)

(2026-09-09 실측 — 로컬 스크립트 실행 결과. 대회 데이터는 가공 샘플입니다.)

출력 읽는 법: 이 샘플이 말하는 것을 읽어 봅시다. ① 순위는 세 대회 모두 목표권(상위 27~28%)에 안착했고, 총점과 효율(1.8 → 2.6점/분)이 함께 올랐으므로 운이 아니라 구조적 상승입니다. ② Forensics는 만점 행진 — 주력 후보로 증명됐습니다. ③ Crypto는 득점률도 효율도 최하위권 — #12에서 40%로 다시 내려간 것이 "반짝 상승이 아닌 구조적 약점"임을 보여 줍니다. ④ 갭 분석의 방향 — 상위 10% 팀과의 차이는 대부분 이 샘플에서는 Crypto와 Pwn 고배점 문제에서 생깁니다.

여러분의 출력에서도 같은 순서로 읽으세요 — 궤적(오르는가), 주력(만점에 가까운가), 약점(득점률·효율 동시 최하인가), 갭(상위 팀은 무엇을 더 풀었는가).

3-5. SWOT 작성 — 숫자의 번역

3-4의 결과를 네 칸으로 옮깁니다. 샘플 데이터 기준의 예시입니다.

[SWOT — Level 3 수료 시점] (화면 예시)
S 강점: Forensics 만점 행진(3/3 대회), Web 상위권(71→86→75%)
        → "증명된 주력: Forensics·Web"
W 약점: Crypto 득점률 40% 이하 + 효율 최하(0.8~1.5점/분)
        → "구조적 약점: Crypto — 보강 없이는 상위 20%의 벽"
O 기회: 국내 대회 시즌 진입(Step 324~326), Forensics 수요 높은
        버그바운티·침해분석 영역, 팀의 유지
T 위협: 12회 사이클 종료 후의 동기 공백(정체 위험),
        Crypto 회피가 습관으로 굳을 위험

읽는 법: 각 칸의 첫 줄이 숫자에서 왔는지 확인하세요 — S와 W는 3-4 출력의 직역이어야 합니다. T의 "동기 공백"은 숫자가 아니라 경험에서 오는 유일한 칸입니다 — 열두 사이클의 관성이 끊기는 지금이, 실은 가장 흔한 이탈 지점입니다. Level 4 계획이 필요한 진짜 이유가 여기 있습니다.

3-6. Level 4 진입 계획 문서

지도(2-5) 위에 순서·시점·목표를 놓습니다. 첫 덩어리를 고르는 기준은 흥미가 아니라 증명된 자산의 전환 경로입니다 — 어느 덩어리가 내 기록을 가장 빨리 외부의 인정(자격, 제보 인정, 성적)으로 바꿔 주는가.

증명된 자산 (3-4의 숫자) 자연스러운 첫 덩어리 전환 경로
실전 플랫폼 트랙의 축적 (HTB Medium 졸업·Hard 복기) OSCP (304~313) 머신 공략력 → 공인 자격
Web 분야의 득점률 상위 버그바운티 (314~319) 웹 공격력 → 실서비스 제보
Reversing 트랙의 완주 1-day 분석 (320~323) 바이너리 해부력 → CVE 분석
대회 운영의 성숙 (전략 문서·팀 커뮤니케이션) 대회 사이클 (324~328) 팀 전술 → 국내 본선 성적

읽는 법: 매핑은 대응 관계의 예시이지 명령이 아닙니다. 여러분의 숫자가 가리키는 행을 고르세요. 그리고 고르지 않은 덩어리에도 순번을 적습니다 — Level 4의 45개 스텝은 결국 전부 지나는 길이고, 지금 정하는 것은 순서뿐입니다.

샘플 데이터의 SWOT을 따른 계획 예시입니다.

[Level 4 진입 계획] (화면 예시)
첫 덩어리: OSCP 트랙 (304~313)
  근거: 실전 플랫폼 트랙(Medium 졸업·Hard 복기)이 자산 —
        침투 실전력의 공인 증명이 가장 빠른 수익화 경로
  시작: 2주 후 (그전까지 대회 회고록 #12와 이 문서의 정리)
병행: 버그바운티 제도 학습 (314) — OSCP 모의시험 사이의 주말
보강: Crypto — Level 4 진입과 무관하게 주 2회 Cryptopals 재개
       (W의 방치는 T를 현실로 만든다)
1년 목표: OSCP 합격 + 버그바운티 첫 인정 제보 + 국내 대회 본선 진출
측정 방법: 분기마다 이 문서의 '1년 목표' 행에 진척 기록

읽는 법: 세 가지 결함을 검사하세요. ① 근거가 SWOT의 숫자와 연결되는가, ② 시작 시점이 "언젠가"가 아닌 달력의 날짜인가, ③ 1년 목표가 측정 가능한가("실력 향상"은 목표가 아니라 바람). 이 세 개가 갖춰지면 그 문서는 계획입니다.

참고: 첫 덩어리의 시작일 사이에 "아무 계획 없는 공백"을 두지 마세요. 3-5의 T(동기 공백)가 발목을 잡는 곳이 바로 그 기간입니다. 시작 전 기간의 과제 — 회고록 정리, 패키지 백업, 팀 재편 — 을 계획 문서에 같이 적어 두세요.

3-7. Level 3 완전 회고 — 나를 바꾼 순간 TOP 5

마지막 공정은 숫자가 아닙니다. Step 176~302의 127개 스텝을 훑으며, "이 순간 이후의 나는 다르다"고 말할 수 있는 순간 다섯 개를 고릅니다. 형식은 자유이되, 각 항목에 스텝 번호를 붙이세요. 화면 예시:

[Level 3 — 나를 바꾼 순간 TOP 5] (화면 예시)
1. Step 186 — RET 주소를 덮어쓰고 쉘이 뜬 순간. "메모리는 종이가 아니라 문이다"
2. Step 202 — 처음으로 책 없이 웹 문제를 풀었다. 독립의 첫 감각
3. Step 256 — HTB 첫 독립 root. 6시간의 막힘 끝의 id 명령
4. Step 275 — 상위 플레이어 Write-up을 읽고 내 사고의 좁음을 본 날
5. Step 302 — 열두 번째 대회 종료 선언. 순위보다 궤적을 보게 된 날

읽는 법: 이 목록의 용도는 두 가지입니다 — 하나, Level 4에서 지칠 때 꺼내 볼 동기의 비축. 둘, 훗날 후배나 팀원에게 Level 3을 설명할 때의 교재. 숫자의 회고(3-4)가 머리의 정리라면, 이 다섯 줄은 마음의 정리입니다.

고르는 절차를 정해 두면 막히지 않습니다. 먼저 스텝 목록을 위에서 아래로 훑으며 "멈칫"한 곳에 전부 표시합니다 — 열다섯 개가 나와도 괜찮습니다. 그다음 각 후보에 질문 하나를 던집니다 — "이 순간이 없었다면 지금의 나와 다른가?" 다른 쪽만 남깁니다. 마지막으로 다섯 개를 고를 때는 종류를 섞으세요 — 기술의 순간(첫 익스플로잇), 태도의 순간(처음 복기를 끝까지 한 날), 관계의 순간(팀이 만들어진 날)이 고루 들어간 목록이 Level 3의 실제 모습에 가깝습니다.


4. 미션과 연습문제

미션 — Level 3 종합 평가 문서 완성

다음 다섯 부로 구성된 종합 평가 문서 하나를 완성하세요.

  1. 자격 검증표: 네 조건을 증거 위치와 함께 (3-1). 미달 항목은 "무엇을, 언제까지"의 보충 계획으로.
  2. 배운 것 지도: 3-2의 아홉 트랙 행에 자기 기록의 "남은 것"을 채움.
  3. 득점 분석 리포트: 최근 3개 대회의 원자료 표 + 분석 스크립트 출력 + 네 지표 해석(궤적/주력/약점/갭) 각 1문단.
  4. SWOT: 네 칸, S·W는 분석 숫자의 직역으로.
  5. Level 4 진입 계획: 첫 덩어리와 근거, 시작 날짜, 1년 목표(측정 가능), 측정 방법.

문서 말미에 3-7의 TOP 5를 첨부합니다.

연습문제

문제 1. 자격 조건 네 가지가 각각 증명하는 근육(실행/분석/심화/전달)을 대응시키고, 왜 한 가지 근육만으로는 수료 조건이 성립하지 않는지 설명해 보세요.

문제 2. 득점률은 낮지만 시간 효율은 높은 분야와, 둘 다 낮은 분야의 처방이 어떻게 다른지 설명해 보세요.

문제 3. 3-4 샘플 출력에서 Crypto를 "구조적 약점"으로 판정한 근거 두 가지를 들어 보세요.

문제 4. Level 4 진입 계획의 "1년 목표"가 측정 가능해야 하는 이유를, 3-6의 "측정 방법" 행과 연결해 설명해 보세요.


해설과 완료 기준 · 펼치기/접기

5. 모범 답안과 완료 기준

미션 모범 답안

검증 기준으로 확인하세요.

  1. 증거성: 자격 검증표의 모든 판정에 로그·링크·캡처의 좌표가 있는가. "한 것 같다"는 문장이 하나라도 있으면 초안으로 되돌립니다.
  2. 지도의 완결: 아홉 트랙 행의 "남은 것" 칸이 전부 채워졌는가 — 비어 있는 칸은 잊은 것이 아니라 아직 평가하지 않은 것입니다.
  3. 분석의 교차 검증: 약점 판정이 득점률·효율 두 지표의 동시 근거인가. 하나의 숫자로 내린 결론은 미완입니다.
  4. SWOT의 번역성: S와 W의 각 줄이 분석 리포트의 어느 숫자에서 왔는지 추적 가능한가.
  5. 계획의 삼결함 검사: 근거-숫자 연결, 달력의 시작일, 측정 가능한 목표 — 셋이 갖춰졌는가.
  6. TOP 5의 첨부: 각 항목에 스텝 번호가 붙어 있는가.

연습문제 해답

문제 1 해답. 대회 12회는 실행(반복된 실전), 회고록 12편은 분석(경험의 지식화), Hard급 3편은 심화(고난도 독립 해결), 누적 50개는 전달(설명 가능한 지식)을 증명합니다. 하나만으로는 불충분한 이유 — 전문가의 일은 이 넷의 순환이기 때문입니다. 많이 하지만 복기하지 않으면 정체되고, 복기만 하면 실전이 마르고, 쉬운 것만 반복하면 천장이 낮고, 설명하지 못하면 지식이 온전히 내 것이 되지 않습니다(Step 278). 네 조건은 그 순환의 각 고리가 끊기지 않았음을 요구하는 장치입니다.

문제 2 해답. 득점률 낮음 + 효율 높음은 "그 분야의 배점 기회가 적었을 뿐"인 착시일 수 있습니다 — 짧은 시간에 있는 배점을 다 회수했으므로 처방은 전략 수정(우선순위 상향) 정도입니다. 둘 다 낮으면 진짜 약점입니다 — 시간을 써도 점수가 안 나오므로 처방은 보강 학습이며, Level 4 계획에 명시적 항목(3-6의 "보강" 행)으로 들어가야 합니다. 같은 "낮은 득점"이라도 원인이 다르면 처방이 다르고, 효율 지표가 그 구분을 해 줍니다.

문제 3 해답. ① 득점률이 세 대회 모두 최하위권(25%, 50%, 40%)이며 #11의 반등이 #12에서 꺾여 일시적 상승이 아님이 드러났습니다. ② 시간 효율이 #10(0.8점/분)과 #12(1.5점/분)에서 전 분야 최하 — 시간을 들여도 점수로 환산되지 않습니다. 득점률과 효율의 동시 최하, 그리고 대회를 가로지르는 반복 — 이 두 근거가 있어야 "구조적"이라는 단어를 붙일 수 있습니다.

문제 4 해답. 측정 가능하지 않은 목표는 진척을 기록할 수 없고, 진척이 없으면 "측정 방법" 행이 죽은 문장이 되기 때문입니다. "OSCP 합격", "첫 인정 제보", "본선 진출"은 전부 분기마다 O/X 또는 진행률로 기록할 수 있는 상태입니다. 반대로 "실력 향상" 같은 목표는 분기 점검 때마다 해석이 달라져 — 마음대로 달성 선언도, 연기도 가능한 목표는 계획의 기능을 하지 못합니다. 측정 가능성은 목표의 품질 기준이 아니라 계획의 존재 조건입니다.

완료 기준 체크리스트

  • [ ] 자격 검증표 네 조건을 증거 위치와 함께 채웠다 (미달은 보충 계획으로)
  • [ ] 배운 것 지도 아홉 트랙의 "남은 것"을 전부 채웠다
  • [ ] 최근 3개 대회의 원자료 표를 실제 로그에서 정리했다
  • [ ] 분석 스크립트를 실행해 득점률·효율·추이·갭을 산출했다
  • [ ] 네 지표 해석(궤적/주력/약점/갭)을 각 1문단으로 썼다
  • [ ] SWOT 네 칸을 완성하고 S·W를 숫자에 추적 가능하게 연결했다
  • [ ] Level 4 진입 계획에 첫 덩어리·시작일·측정 가능한 1년 목표를 적었다
  • [ ] 나를 바꾼 순간 TOP 5를 스텝 번호와 함께 첨부했다

6. 흔한 실수와 해결

벽 1. 로그가 빠진 대회가 있어 자격 검증이 안 돼요

증상: 초기 대회 몇 개의 로그를 찾을 수 없습니다.

원인: 기록 습관은 시즌 중반에 잡히는 경우가 많습니다 — 정상적인 성장 곡선입니다.

해결: 두 갈래로 처리하세요. 회고록이 남아 있다면 그 문서가 참가의 대체 증거가 될 수 있는지 확인하고, 득점 자체가 없는 대회면 "득점 12회"의 정의를 처음부터 솔직하게 다시 셉니다. 부족하면 미달로 기록하고 보충 계획(다음 대회 1~2회 추가 참가)을 세우세요 — 2-2에서 말했듯, 미달은 탈락이 아니라 일정입니다. 꾸민 통과는 Level 4 전체를 흔듭니다.

벽 2. 분석 숫자가 샘플보다 초라해서 쓰기 싫어요

증상: 득점률이 전반적으로 낮아 문서가 자책이 될 것 같습니다.

원인: 이 분석의 목적은 자랑이 아니라 좌표 확정입니다 — 낮은 숫자도 정확한 좌표면 Level 4 설계의 훌륭한 입력입니다.

해결: 해석 문단의 첫 문장을 궤적으로 시작하세요 — 순위 절대값이 아니라 #10에서 #12로의 기울기가 여러분의 문장입니다. 그리고 기억하세요: 이 문서의 독자는 1년 뒤의 여러분입니다. 그때의 여러분에게 필요한 것은 포장된 숫자가 아니라, 돌아볼 수 있는 정직한 출발점입니다.

벽 3. 갭 분석을 하려는데 상위 팀 데이터가 없어요

증상: 상위 팀이 무엇을 풀었는지 알 수 없습니다.

원인: 대회 종료 후 공개되는 것이 있습니다 — 최종 스코어보드와 상위 팀의 Write-up입니다.

해결: 스코어보드의 분야별 풀이 수(문제별 solved count)만으로도 갭의 윤곽은 나옵니다 — 우리가 못 푼 문제를 몇 팀이 풀었는가. 상위 팀 Write-up 1편을 골라 우리 로그와 나란히 놓으세요. 차이가 "지식"인지 "절차"인지 한 줄로 적는 것 — 그것이 정밀한 갭 분석의 전부입니다.

벽 4. Level 4의 다섯 덩어리가 다 하고 싶어서 못 고르겠어요

증상: OSCP도, 버그바운티도, 1-day도 다 첫 덩어리로 적고 싶습니다.

원인: 선택이 아니라 회피입니다 — 하나를 고르면 나머지의 "아쉬움"을 감수해야 하니까요.

해결: 3-4의 숫자에게 물으세요. 첫 덩어리의 기준은 "가장 빨리 외부의 인정으로 바뀌는 자산이 어디 있는가" 하나입니다 — 흥미가 아니라 자산의 증명 경로로 고릅니다. 나머지는 버리는 것이 아니라 계획 문서에 순번을 적습니다. 순서가 있는 욕심은 계획이고, 순서 없는 욕심은 정체됩니다.

벽 5. TOP 5를 고르다 보니 다섯 개로 못 줄이겠어요

증상: 열 개쯤 나옵니다. 전부 소중합니다.

원인: 127개 스텝을 거친 사람에게 순간이 다섯 개뿐일 리 없습니다 — 좋은 신호입니다.

해결: 기준을 "기억에 남는가"에서 "이후의 내가 달라졌는가"로 바꾸세요. 즐거웠던 순간과 변화의 순간은 겹치기도 하지만 다릅니다. 그래도 안 줄면 다섯 개를 고른 뒤 나머지는 문서 말미의 "차기 후보" 줄에 모아 두세요 — 다듬는 행위 자체가 Level 3 전체를 다시 훑는 복기입니다.


7. 정리

오늘의 개념

개념 한 줄 설명
자격 조건의 증거성 실행/분석/심화/전달 — 네 근육, 증거 없는 판정은 초안
득점 구조 분석 득점률 × 효율 × 추이 × 갭 — 숫자 하나로 결론 내리지 않는다
구조적 약점 득점률·효율 동시 최하 + 대회를 가로지르는 반복
SWOT의 번역 S·W는 분석 숫자의 직역, O·T는 지도와 경험에서
진입 계획의 삼결함 근거-숫자 연결, 달력의 시작일, 측정 가능한 목표
미달의 처리 탈락이 아니라 일정 — "무엇을, 언제까지"로

오늘의 명령어·도구

명령·도구 하는 일
python step303_analysis.py 3개 대회 원자료 → 득점률/효율/추이/갭 산출
자격 검증표 네 조건의 증거 위치 대조
배운 것 지도 (9행) Level 3 전체의 색인 — 성취와 남은 것
종합 평가 문서 (5부) 검증/지도/분석/SWOT/계획 + TOP 5 첨부

명령어보다 중요한 감각

Level 3에서 여러분은 다섯 분야를 맛보고 주력을 정했고, 어셈블리와 메모리의 언어를 배웠으며, 수십 대의 실전 머신을 혼자 뚫었고, 열두 번의 대회를 치르고 열두 번 복기했습니다. 그 긴 시간이 오늘 하나의 문서가 됐습니다 — 표와 숫자로 압축됐다는 것은, 언제든 다시 펼쳐 쓸 수 있다는 뜻입니다.

그리고 이 문서가 약속하는 것을 기억하세요. 자격 조건의 증거들은 어느 면접에서도, 어느 팀 지원에서도 그대로 제출할 수 있는 실물이고, 득점 분석의 숫자들은 1년 뒤의 여러분이 "내가 어디서 왔는가"를 잊지 않게 할 좌표입니다.

Level 3, 수료를 축하합니다. 여러분은 대회를 치르는 사람을 지나, 자기 실력을 데이터로 운영하는 사람이 됐습니다. 문서를 닫고, 쉬고, 정한 날짜에 다시 여세요.


전부 체크되면 Step 303 완료입니다.

한 단계 더 가까이

수업을 마쳤나요?

본문의 완료 기준을 확인한 뒤 직접 표시하세요.

화면이나 링크에 문제가 있나요? 알려주세요.
다음 수업