EXPLORE THE CURRICULUM
Level 3 · CTF와 분야별 심화
웹, 시스템, 리버싱, 암호, 포렌식을 탐색하고 연습합니다.
이 레벨의 시작점 기초 보안 실습을 경험한 분 · Step 176–303
128 개의 수업
선택 초기화L3CTF 분야 탐색Step 176–1816 수업
- 176 CTF 맛보기 1: Web 문제 5개 — 실전 경기장에 입장하다CTF의 형식(플래그, 카테고리, 제출)을 설명한다
- 177 CTF 맛보기 2: Pwn 문제 도전 (pwnable.kr) — 바이너리와의 첫 대면Pwn 문제의 구조(분석용 파일 + 공격 대상 서버)를 설명한다
- 178 CTF 맛보기 3: Reversing — crackme 2개 + Ghidra — 소스 없이 읽는 법정적 분석(실행하지 않고 읽기)과 동적 분석(실행하며 관찰)의 차이를 설명한다
- 179 CTF 맛보기 4: Crypto 입문 3개 — 수학 퍼즐로서의 암호인코딩(encoding)과 암호화(encryption)의 차이를 설명한다
- 180 CTF 맛보기 5: Forensics/기타 3개 — 수상한 파일의 해부매직 바이트(파일 시그니처)로 파일의 실제 종류를 판별한다
- 181 ★ 주력 분야 선정 + 보조 분야 결정 — 나는 어떤 플레이어인가다섯 분야의 성격(학습 곡선, 대회 비중, 진로 연계)을 표로 비교한다
L3어셈블리와 시스템 입문Step 182–1909 수업
- 182 어셈블리 1: 레지스터, mov/push/pop/call/ret, 스택 프레임 — 공용 언어의 문자표x86-64 범용 레지스터의 이름과 용도(rax, rdi, rsp, rbp 등)를 안다
- 183 어셈블리 2: gdb 기초 — 실행 중인 프로그램의 현미경gcc -g -O0의 의미(-g: 디버그 정보, -O0: 최적화 끄기)를 설명하고 디버깅용 바이너리를 만든다
- 184 어셈블리 3: C 프로그램을 gdb로 한 줄씩 따라가기 — 호출 규약의 실황 중계gcc -S로 만든 어셈블리 소스와 gdb의 disas 출력을 대조해 읽는다
- 185 스택 완전 이해 — 함수 호출 시 스택에 쌓이는 것들의 완전한 지도함수 호출 시 스택에 쌓이는 것들의 순서(지역 변수 → saved rbp → RET)를 그린다
- 186 ★ 버퍼 오버플로우 재현: RET 덮어쓰기 성공 — 인생 첫 메모리 공격공격 대상 바이너리를 실험실용 옵션으로 컴파일하고 각 옵션의 의미를 설명한다
- 187 보호 기법: NX, ASLR, Canary, PIE — 사중 방어막의 지도NX, Canary, ASLR, PIE 네 보호 기법의 동작 원리를 각각 한 문장으로 설명한다
- 188 pwntools 입문: 연결, p64, 페이로드 자동화 — 손공격에서 스크립트로venv에 pwntools를 설치하고 설치를 검증한다
- 189 ★ 미니 프로젝트: 오버플로우 익스플로잇 스크립트 완성 — 손 공격을 공학으로cyclic() 패턴의 원리(겹치지 않는 조각의 나열)를 설명한다
- 190 팀 찾기/결성 + CTFtime 캘린더 — 혼자 하는 게임을 팀 스포츠로CTFtime의 대회 캘린더·팀 페이지·랭킹 구조를 읽는다
L3웹 보안 심화Step 191–20212 수업
- 191 PortSwigger Academy: SQLi 고급 — Blind, time-based, OOBBlind SQLi의 세 가지 오라클(참/거짓, 시간, OOB)을 상황별로 구분한다
- 192 고급 XSS: CSP 우회, DOM 심화 — 방어막이 있는 환경의 공격CSP 헤더의 지시자(script-src, 'self' 등)를 읽고 의미를 해석한다
- 193 SSTI: 템플릿 인젝션 → RCE — 입력이 서버의 코드가 될 때SSTI가 SQL 인젝션·XSS와 같은 뿌리(입력이 코드가 됨)임을 설명한다
- 194 SSRF — 서버를 프록시로 부려 내부망을 읽다SSRF가 왜 "요청을 대신 보내는 기능"에서 생기는지 설명한다
- 195 XXE — XML 파서에 숨은 파일 읽기 명령XML의 DOCTYPE과 엔티티 선언 문법을 읽고, 외부 엔티티가 왜 위험한지 설명한다
- 196 역직렬화 취약점 — 데이터가 코드가 되는 순간직렬화와 역직렬화가 무엇인지, 왜 역직렬화가 코드 실행으로 이어지는지 설명한다
- 197 JWT 공격 심화 — alg 혼동과 약한 시크릿으로 관리자 되기HS256(대칭)과 RS256(비대칭)의 키 구조 차이를 설명한다
- 198 GraphQL/API 보안 — 하나의 문으로 들어가 스키마를 통째로 읽다GraphQL 쿼리의 구조를 읽고 REST와의 차이를 설명한다
- 199 Webhacking.kr 1~15 — 국내 워게임 종합 선물 세트Webhacking.kr의 문제 목록 구조(점수·풀이 수)를 읽고 난이도를 가늠한다
- 200 Webhacking.kr 16~30 — 기법의 창의적 조합문제의 "보이는 방어"를 목록화하고 우회 후보를 표로 만들어 소거한다
- 201 레이스 컨디션, HTTP 요청 스머글링 개념 — 찰나와 어긋남의 공격TOCTOU(확인-사용 시점 차이)의 구조를 그림으로 설명한다
- 202 ★ 중간 점검: 중급 웹 문제 독립 해결 3연속 — Write-up 금지 구간공정한 점검이 되도록 문제를 선정하는 기준(랜덤, 유형 사전 차단)을 적용한다
L3Pwn과 메모리Step 203–21412 수업
- 203 shellcode 작성: execve 쉘코드 손으로 만들기 — 쉘을 띄우는 29바이트execve 시스템 콜의 호출 규약(rax=59, rdi, rsi, rdx)을 설명한다
- 204 ret2win: 원하는 함수 호출 — 인자까지 쥐여주는 RET 덮어쓰기System V 호출 규약에서 첫 번째 인자가 rdi로 전달됨을 설명한다
- 205 ROP 1: 가젯 개념, ROPgadget/ropper — 코드 조각의 조립술가젯의 정의("ret로 끝나는 명령 조각")와 유용 가젯의 종류를 안다
- 206 ROP 2: 체인으로 system("/bin/sh") 호출 — NX를 넘어 쉘로NX가 켜진 바이너리에서 ROP가 유일한 길인 이유를 설명한다
- 207 ret2libc: libc 주소 leak과 ASLR 우회 — 매번 바뀌는 주소를 추적한다ASLR이 libc 주소를 어떻게 바꾸는지 ldd 실측으로 증명한다
- 208 Format String: %n으로 메모리 쓰기 — 출력 함수로 쓰는 공격printf(buf)가 왜 취약한지, 올바른 코드와 비교해 설명한다
- 209 pwnable.kr Toddler's Bottle 완주 — 입문 워게임 졸업식Toddler's Bottle 전체 문제 목록과 각 문제가 가르치는 함정을 정리한다
- 210 GOT/PLT 구조 이해와 GOT overwrite — 함수 호출 가로채기PLT(점프대)와 GOT(주소표)의 역할과 지연 바인딩의 순서를 설명한다
- 211 힙 입문: 할당자 동작, use-after-free 개념 — 반납된 땅의 재사용힙 청크(chunk) 의 구조(헤더 + 사용자 데이터)를 그리고 크기를 계산한다
- 212 힙 익스플로잇 맛보기: tcache poisoning — 대기열 장부를 덮다tcache가 단일 연결 리스트라는 것과 next 포인터의 위치를 설명한다
- 213 pwnable.tw 쉬운 문제 3개 — 소스 없는 세계로pwnable.kr과 pwnable.tw의 난이도·구성 차이를 설명한다
- 214 ★ 중간 점검: Canary+NX 바이너리 독립 익스플로잇 — 유출하고, 살려 두고, 덮는다보호 기법 판별(정찰)부터 전략 수립까지 익스플로잇의 전 과정을 혼자 설계한다
L3리버스 엔지니어링Step 215–22612 수업
- 215 Ghidra 심화: 함수 분석, 구조체 복원 — 기계가 지은 이름을 사람의 언어로Ghidra에서 함수 이름 바꾸기(L)와 시그니처 편집(Edit Function Signature)을 한다
- 216 x64dbg 심화: 메모리 브레이크포인트, 패치 — 실행 중인 프로그램을 수술한다x64dbg에서 문자열 검색으로 비교 코드를 역추적하는 루틴을 수행한다
- 217 crackme 10개 (난이도 하) — 유형을 간파하는 속도를 기른다난이도 하 crackme의 세 유형(직접 비교 / 변환 비교 / 글자별 분기)을 구분한다
- 218 crackme 10개 (난이도 중) — 관계식을 읽고, 문을 하나씩 연다난이도 중의 세 특징(관계식 검증, 다단계 체크, 실행 의존 검증)을 구분한다
- 219 안티디버깅 기법과 우회 — 디버거를 피하는 프로그램과 그 돌파법안티디버깅(anti-debugging)이 무엇인지, 왜 쓰는지 설명한다
- 220 패킹과 언패킹 — UPX와 OEP 찾기패커(packer)의 구조 — 압축된 페이로드 + 풀어 주는 스텁(stub) — 을 설명한다
- 221 키젠 — 시리얼 알고리즘 분석과 생성기 작성시리얼 검증 프로그램의 표준 구조(입력 → 변환 → 비교)를 설명한다
- 222 .NET과 파이썬 바이너리 리버싱 — 기계어가 아닌 바이너리네이티브 / .NET / 파이썬 바이너리의 차이를 설명하고 판별한다
- 223 안드로이드 APK 분석 맛보기 — jadxAPK의 내부 구조(AndroidManifest.xml, classes.dex, 리소스)를 설명한다
- 224 난독화된 코드 분석 전략 — 정면으로 읽으면 지는 싸움난독화의 세 유형(이름 파괴, 문자열 암호화, 제어 흐름 평탄화)을 구분한다
- 225 악성코드 정적 분석 (격리 랩 필수) — 실행하지 않고 속을 읽는다격리 랩의 세 규칙(네트워크 차단, 스냅샷, 전용 환경)을 이유와 함께 설명한다
- 226 ★ 중간 점검: 난이도 중 crackme 독립 해부 — 풀이 없이, 끝까지공정한 점검이 되도록 crackme를 선정한다(난이도·아키텍처·풀이 수 기준)
L3암호학과 CryptoStep 227–23812 수업
- 227 수학 기초: 모듈러 연산, 유클리드 호제법, 오일러 정리 — 암호의 최소 무장모듈러 연산을 "시계 산수"로 이해하고 파이썬 %와 pow(a, b, n)으로 계산한다
- 228 RSA 완전 구현: 키 생성부터 암복호화까지 — 교과서를 내 손으로Miller-Rabin 소수 판별로 512비트 소수를 직접 생성한다
- 229 RSA 공격 1: 작은 e, 공통 모듈러스 — 구현 실수가 수학적 약점이 되는 순간e=3이고 m^3 < n일 때 정수 세제곱근으로 평문을 복구한다
- 230 RSA 공격 2: 페르마 인수분해, Wiener's attack — 키 생성이 엉터리면 수학이 무너진다페르마 인수분해를 구현하고, p와 q의 거리와 반복 횟수의 관계를 설명한다
- 231 Cryptopals Set 1 완주 — XOR 공격의 교과서를 내 코드로hex ↔ bytes ↔ base64 변환을 자유롭게 하고 각 형식의 역할을 설명한다
- 232 Cryptopals Set 2: ECB/CBC, 패딩 오라클 — 블록 암호의 허점을 뚫는다PKCS#7 패딩을 구현하고 유효성 검증의 참/거짓이 왜 정보를 새는지 설명한다
- 233 AES 구조와 모드별 취약점 — 세계 표준의 해부도와 실패 지도AES의 블록·키 크기와 라운드 수(10/12/14)의 대응을 말한다
- 234 해시 공격: 길이 확장, 충돌 개념 — 해시를 "서명"으로 쓰면 생기는 일머클-담고르(Merkle-Damgård) 구조의 해시가 "상태를 이어받는다"는 것을 설명한다
- 235 DH 키 교환과 MITM 시뮬레이션 — 도청당하는 채널에서 비밀을 만드는 법, 그리고 그 한계DH 키 교환의 절차(g^a mod p 교환 → g^ab mod p 공유)를 코드로 구현한다
- 236 ECC 맛보기: 타원곡선 위의 덧셈 — 점을 더해서 암호를 만든다유한체 위 타원곡선 y² = x³ + ax + b (mod p)의 점을 전부 나열한다
- 237 CTF Crypto 기출 10문제 — 배운 무기를 실전에 투입하는 날주어진 수치(파라미터 크기·형태)를 보고 Crypto 문제의 유형 후보를 2개로 좁힌다
- 238 ★ 중간 점검: 보통 난이도 Crypto 5문제 독립 해결 — Write-up 금지 구간공정한 점검이 되도록 문제를 선정하는 기준(랜덤, 사전 노출 차단)을 적용한다
L3디지털 포렌식Step 239–25012 수업
- 239 헥스와 파일 시그니처: file, binwalk, 수동 치빙 — 바이트 여섯 개의 신원 조회주요 포맷 10종의 매직 바이트를 보고 파일 종류를 말한다
- 240 스테가노그래피: LSB, zsteg, 오디오 스펙트로그램 — 보이는 그림 뒤의 편지LSB 은닉의 원리를 설명하고 파이썬으로 직접 숨기고 추출한다
- 241 pcap 분석 심화: Wireshark 고급 필터, tshark — 패킷 백 개의 사건 재구성-z io,phs(프로토콜 계층)와 -z conv,tcp(대화 목록)로 "어디부터 팔지"를 정한다
- 242 메모리 포렌식: Volatility 3 — 꺼지면 사라지는 증거를 붙잡는 법메모리에만 존재하는 증거의 종류(프로세스, 연결, 명령줄, 평문 데이터)를 열거한다
- 243 디스크 포렌식: Autopsy, 삭제 파일 복구 — 지워진 것은 지워지지 않았다파일시스템의 삭제가 "할당 해제"이지 "데이터 소거"가 아님을 구조로 설명한다
- 244 윈도우 포렌식: 레지스트리, 이벤트 로그, 프리페치 — 실행 흔적의 보고를 뒤진다아티팩트(artifact)라는 용어로 윈도우 실행 흔적 3종(프리페치, UserAssist, 이벤트 로그)을 설명한다
- 245 로그 분석 시나리오: 침입 흔적 타임라인 재구성 — 흩어진 퍼즐을 한 줄의 이야기로웹 접근 로그(Apache 형식)와 인증 로그(auth.log 형식)의 한 줄을 읽는다
- 246 EXIF/메타데이터와 문서 포렌식 — 파일 속에 새겨진 지문을 읽는다EXIF와 문서 메타데이터(metadata)가 무엇이고 왜 증거가 되는지 설명한다
- 247 암호화 아티팩트 복구 기법 — 잠긴 증거를 여는 세 가지 열쇠단일 바이트 XOR 암호화 파일을 전수 조사(256회)로 복구한다
- 248 종합 포렌식 챌린지 5개 — 기법 사슬을 혼자 힘으로 잇는다미지의 파일을 받으면 시그니처 확인부터 시작하는 조사 순서를 몸으로 수행한다
- 249 네트워크 침해 사고 분석 시뮬레이션 — 패킷 속에서 사건을 재구성한다IR 절차(준비 → 탐지 → 봉쇄 → 복구 → 교훈)의 다섯 단계를 말할 수 있다
- 250 ★ 중간 점검: 종합 포렌식 문제 독립 해결 + 보고서 — 증명하는 사람이 된다종합 포렌식 문제를 도움 없이 선정하고 착수할 수 있다
L3실전 머신과 침투 실습Step 251–27828 수업
- 251 TryHackMe 입문 경로 + Easy 룸 3개 — 실전 머신의 문을 연다TryHackMe의 룸 구조(태스크·질문·힌트·머신)를 설명할 수 있다
- 252 THM Easy 5개 (누적 8) — 루틴을 손가락에 새긴다유형이 다른 머신(웹 중심, SMB 중심 등)에 같은 루틴을 적용한다
- 253 THM 리눅스 privesc 룸 (누적 13) — 쉘 그다음, root까지쉘 획득 직후의 첫 명령 세트(sudo -l → SUID → cron → passwd 권한)를 순서대로 실행한다
- 254 THM 윈도우/AD 입문 룸 (누적 18) — 기업 환경의 주인공을 만나다윈도우 머신의 대표 서비스 포트(SMB 445, RDP 3389, WinRM 5985)를 보고 접근 전략을 세운다
- 255 Hack The Box Starting Point 완주 — 한 수 위의 무대로HTB와 THM의 구조적 차이(힌트, 머신 운영, 플래그 방식)를 설명한다
- 256 HTB Easy 2대 — 혼자서 root까지: 안내 없는 첫 완주"혼자 푼다"의 허용 자원과 금지 자원의 경계를 설명한다
- 257 HTB Easy 2대 (누적 4) — 입구의 레퍼토리를 넓히다초기 침투 벡터(입구)를 유형별로 분류하고 내 경험의 편중을 진단한다
- 258 HTB Easy 2대 (누적 6) — 시간 제한 훈련: 시계를 켜고 푼다단계별 시간 배분(정찰/침투/상승)을 설정하고 알람으로 강제한다
- 259 리눅스 권한 상승 완전 정복 — 패턴에서 체크리스트로리눅스 권한 상승의 여덟 가지 패턴을 나열하고 각각의 탐색 명령을 안다
- 260 윈도우 권한 상승 완전 정복 — 서비스·토큰·설정의 문들whoami /priv 출력을 읽고 SeImpersonatePrivilege의 의미를 안다
- 261 Active Directory 1 — 도메인 구조 이해도메인·트리·포레스트·도메인 컨트롤러(DC)의 관계를 그림으로 그린다
- 262 Active Directory 2 — Kerberoasting과 AS-REP RoastingKerberoasting이 왜 "정상 기능의 악용"인지 Kerberos 흐름 위에서 설명한다
- 263 Active Directory 3 — Pass-the-Hash와 BloodHoundNTLM 챌린지-응답 구조가 왜 "해시 = 비밀번호"를 만드는지 설명한다
- 264 피벗팅 심화 — 장악한 머신을 통과해 내부망으로이중 네트워크(DMZ 안쪽의 내부망) 구조에서 피벗팅이 왜 필요한지 그림으로 설명한다
- 265 HTB Medium 1대 — 며칠 걸려도 독립 해결Easy와 Medium의 구조적 차이(체인, 꼬임, 열거 요구량)를 설명한다
- 266 Medium 복기 + 재공략 — 풀고 나서 배우는 법진척 로그에서 타임라인을 재구성해 "어디서 시간을 썼는가"를 정량화한다
- 267 HTB Medium 1대 (누적 2) — 주연 서비스를 읽고, 막힘을 통계로첫 정찰 결과에서 머신의 유형(웹 중심/서비스 중심/AD 등)과 "주연 서비스"를 지목한다
- 268 HTB Medium 1대 (누적 3) — 열거의 깊이열거의 "넓게"와 "깊게"를 구분하고, 막힘의 종류에 맞는 쪽을 선택한다
- 269 HTB Medium 1대 (누적 4) — 취약점 조합취약점 체인의 개념과 대표 패턴(정보 노출 → 인증 우회 → RCE)을 설명한다
- 270 HTB Medium 1대 (누적 5) + Medium 졸업 정리다섯 번째 Medium 머신을 독립 공략한다
- 271 HTB AD 트랙 머신 1대 — 도메인 장악의 표준 루트AD 머신의 스캔 결과(SMB·LDAP·Kerberos 포트)를 읽고 도메인 환경임을 판별한다
- 272 나만의 침투 플레이북 완성 — 지금 실력의 사진을 찍는다흩어진 루틴 문서들을 8개 절 구조의 플레이북으로 통합한다
- 273 HTB Hard 도전 1 — 자세히 열거, 가설 검증Hard가 Medium과 다른 세 가지 특성(모르는 기술·숨겨진 입구·다단계 체인)을 설명한다
- 274 HTB Hard 도전 2 — 기술 부채 상환: 모르는 것을 목록으로 만들어 갚는다공략 로그에서 "몰라서 못한 것"을 [모름] 태그로 추출한다
- 275 HTB Hard 복기 — 상위 플레이어 Write-up 분석: 결과가 아니라 판단 근거를 읽는다Write-up을 "정답지"가 아니라 "사고 과정의 기록"으로 읽는 분해법을 적용한다
- 276 속도 훈련: Easy 4시간 컷 — 루틴을 자동화 수준으로 끌어올린다Easy 머신 4시간 타임어택의 구간별 예산표를 세우고 지킨다
- 277 속도 훈련: Medium 8시간 컷 — 장기전의 체력과 페이스 배분Medium 8시간의 단계별 예산표(열거 2h / 침투 3.5h / 상승 2h / 여유 0.5h)를 세운다
- 278 ★ 실전 점검: Medium 타임어택 + 발표 연습 — 푸는 것과 설명하는 것은 다른 근육이다Medium 머신을 8시간 타임어택으로 공략하며 발표용 증거(결정적 순간 캡처)를 동시에 수집한다
L3CTF 대회와 복습Step 279–30325 수업
- 279 ★ CTF 대회 #1: 주말 대회 풀 참가 — 첫 대회의 목표는 성적이 아니라 완주다첫 대회 전에 환경·도구·플레이북을 점검하는 체크리스트를 돌린다
- 280 CTF 복기 블록 A: 틀린 문제 3개 끝까지 파기 — 실력은 대회가 아니라 복기에서 늘어난다대회 로그에서 복기 가치가 높은 문제 3개를 선정하는 기준을 적용한다
- 281 ★ CTF #2: 이번엔 팀으로 — 분업의 효율과 소통의 비용을 동시에 배우는 날킥오프 미팅 30분으로 분야 배정과 단서 공유 규칙을 합의한다
- 282 CTF 복기 블록 A + 블록 B: Write-up 3개 작성 — 재현 가능한 글이 실력의 증거다독자가 재현 가능한 Write-up의 6단 구조(문제 정보/관찰/시도/실패/해결/배운 것)를 적용한다
- 283 ★ CTF #3: 팀 첫 출전 + 목표 설정 — 측정되는 목표만이 팀을 키운다순위 목표와 행동 목표를 구분하고, 행동 목표만으로 대회 목표를 설계한다
- 284 CTF 복기 블록 A + 팀 회의: 약점 분석 — 감이 아니라 데이터로 팀의 지도를 그린다대회 3회분의 결과를 분야별 시도/성공/소요 시간 표로 정리한다
- 285 ★ CTF #4: 약점 분야 공략 대회 — 잘하는 것을 잠깐 내려놓는 용기의도적 불편 훈련(deliberate discomfort)의 원리를 설명하고 대회에 적용한다
- 286 CTF 복기 블록 B: Write-up 누적 30개 달성 — 기록은 복리로 불어난다누적 집계로 현재 수와 부족분을 계산하고 채우기 계획을 세운다
- 287 ★ CTF #5: 주력 분야 심화 확인전 — 우리의 천장이 어디인지 재는 대회같은 분야의 문제를 난이도별로 나눠 성공률을 측정해 "현재 체급"을 수치화한다
- 288 CTF 복기 블록 A + 약점 집중: 틀린 유형 10문제 훈련 — 고질병은 집중 반복으로 끊는다복기 기록에서 실패 빈도 TOP 유형을 데이터로 선정한다
- 289 ★ CTF #6: 중간 평가 대회 — 상위 50% 목표, 점수 구조를 읽는 팀이 배점을 주운다고정 배점과 다이내믹 스코어링(dynamic scoring)의 차이와 풀이 전략상의 의미를 설명한다
- 290 CTF 복기 블록 A + 블록 C: 익스플로잇 코드 정리 — 급조를 자산으로 바꾼다복기 블록 A(못 푼 문제 끝까지 파기)의 루틴을 중간 평가 대회에 적용한다
- 291 ★ CTF #7: 라이브러리 실전 검증 — 자산의 가치는 대회에서만 판명된다대회 시작과 함께 라이브러리 목차를 펼쳐두고 유형 매칭을 10초 안에 내린다
- 292 CTF 복기 블록 A + 블록 B: Write-up 누적 40개 — 읽히는 글이 실력의 증명이다블록 A 루틴으로 대회 #6~#7의 못 푼 문제 3개를 끝까지 파고 Write-up으로 마감한다
- 293 ★ CTF #8: 팀 전술 실험 — 역할 로테이션, 점수를 버리고 팀의 지도를 얻는다역할 로테이션 실험의 사전 합의 사항(목적·배정·규칙)을 문서로 정한다
- 294 CTF 복기 블록 A + Write-up 누적 50개 + 블로그 정돈 — 기록이 커리어가 되는 순간복기 블록 A 루틴으로 대회 #8의 미해결 문제를 끝까지 파고 Write-up 누적 50개를 달성한다
- 295 ★ CTF #9: 상위 30% 목표 대회 — 체급을 재는 시험대최근 대회 데이터로 분야별 득점 가능 예측표를 작성해 전력을 수치로 파악한다
- 296 CTF 복기 블록 A + 팀 전략 점검: 운영 개선 — 기술이 아닌 마찰을 줄이는 것도 점수다채팅 로그에서 단서 반응 시간·묻힌 단서·상태표 갱신 간격 같은 운영 지표를 추출한다
- 297 ★ CTF #10: 10회차 기념 — 전체 회고 — 성장은 선형이 아니라 정체와 도약의 반복이다평소 루틴을 유지한 채 10번째 대회에 출전해 비교 가능한 데이터를 확보한다
- 298 국내 대회 예선 대비: 코드게이트/CCE 기출 풀이 — 기출은 최고의 교과서다코드게이트·CCE의 공개 기출 아카이브에서 문제를 수집하고 목록을 구조화한다
- 299 예선 속도 훈련: 10문제 타임어택 — 쉬운 문제부터 쓸어 담는 페이스의 기술분야 혼합 10문제 세트를 예선 형식에 맞게 설계한다
- 300 ★ CTF #11: 예선 대비 실전 점검 — 80%의 힘으로 검증하는 리허설대회를 "예선의 시뮬레이션"으로 운영한다 — 시간대와 휴식 계획까지 예선과 동일하게
- 301 CTF 복기 블록 A + 블록 B: 마지막 보강 — 구멍 봉인과 전투 패키지대회 #11을 블록 A(틀린 문제 끝까지 파기)와 블록 B(Write-up) 루틴으로 복기한다
- 302 ★ CTF #12: 목표 달성 대회 — 상위 30%, 시즌 피날레확정된 전략을 실험 없이 그대로 실행한다 — 대회 중 전략 수정의 유혹을 차단한다
- 303 ★ Level 3 종합 평가: 최근 3개 대회 득점 분석 + Level 4 계획 — 데이터로 닫고 설계로 연다Level 3 수료 자격 조건(대회 로그 12회, 회고록 12편, Hard급 Write-up 3편, 누적 Write-up 50개)을 증거와 함께 검증한다