Step 277. 속도 훈련: Medium 8시간 컷 — 장기전의 체력과 페이스 배분

Step 277. 속도 훈련: Medium 8시간 컷 — 장기전의 체력과 페이스 배분

Level 3 — CTF 실전과 공격 스킬 심화 | 난이도 ★★★★☆ | 예상 소요 시간 1일 (8시간 타임어택 + 회고 1시간)

전제: Step 276(Easy 4시간 컷)의 병렬화·랩타임 기록 습관, Medium 머신 다수 완주 경험.

  • 준비물: 처음 보는 HTB 또는 THM Medium 머신 1대, 타이머, 랩타임 로그, 매 시간 자가 보고용 메모, 식사·휴식 계획. 이 챕터의 머신 공략 장면은 화면 예시입니다.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. Hack The Box(hackthebox.com)와 TryHackMe는 운영자가 공격 연습용으로 공식 개방한 합법 학습 플랫폼입니다 — 이 플랫폼들의 머신 외에는 오늘의 기술을 쓰지 않습니다.
  • 이 챕터는 훈련 방법론 챕터입니다. Easy 속도전(Step 276)에서 배운 것을 8시간 장기전으로 확장합니다.

Medium 8시간은 대회 하루 일정과 거의 같은 페이스입니다. Easy 4시간이 스프린트라면, Medium 8시간은 중거리 달리기입니다 — 스프린트 기술(병렬화, 템플릿)만으로는 부족하고, 페이스 배분과 체력 관리라는 새 종목이 추가됩니다.

8시간짜리 훈련에서 무너지는 사람은 실력이 부족한 사람이 아니라 대부분 3시간 차에 지친 사람입니다. 오늘의 핵심 질문은 "어떻게 뚫는가"가 아니라 "8시간 내내 판단력을 유지하는가"입니다.


1. 학습 목표

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

  • Medium 8시간의 단계별 예산표(열거 2h / 침투 3.5h / 상승 2h / 여유 0.5h)를 세운다
  • 매 시간 "현재 위치 / 다음 행동" 자가 보고를 작성해 궤도 이탈을 조기에 감지한다
  • 예산 초과 시 "계속 vs 경로 변경"의 의사결정 규칙을 적용한다
  • 50분 작업 / 10분 휴식 리듬으로 장기전의 집중력을 관리한다
  • 중간 세이브(기록) 습관으로 어느 시점에 중단해도 재개 가능한 상태를 유지한다

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

오늘의 도구 한눈에 보기

구분 내용
언어·환경 HTB/THM Medium 머신, Kali 또는 WSL, 타이머(휴식 알림 포함)
오늘의 명령 전부 복습 — Step 276의 병렬화·템플릿 + 시간별 자가 보고
필요한 개념 시간 예산(time budget), 의사결정 규칙, 50/10 리듬, 중간 세이브
오늘의 산출물 8시간 랩타임 로그 + 시간별 자가 보고 + 예산 대비 회고

2-1. Medium의 예산표 — Easy와 무엇이 다른가

Medium이 Easy보다 어려운 이유는 기술이 아니라 경로의 수입니다. Easy는 후보가 2~3개라 순서대로 부수면 되지만, Medium은 열거 결과가 두세 배고, 진짜 입구가 가짜 입구 사이에 섞여 있습니다. 그래서 예산도 다릅니다.

구간 예산 목표 Easy 대비 차이
① 열거 0:00~2:00 전체 공격 표면 + 후보 우선순위 30분 → 2시간. 넓이가 아니라 깊이
② 침투 2:00~5:30 첫 쉘 가짜 입구 1~2회 경험이 예산 안에 포함
③ 상승 5:30~7:30 root/SYSTEM Medium의 상승은 다단계인 경우가 많음
여유 7:30~8:00 밀림 흡수 + 기록 마감

①이 2시간인 이유가 중요합니다. Medium의 열거는 스캔이 아니라 독해입니다 — 웹 앱의 기능을 하나씩 눌러 보고, JS 파일을 읽고, API 응답을 비교하는 시간. 이 2시간을 아끼려는 사람이 ②에서 5시간을 태웁니다.

2-2. 의사결정 규칙 — 예산 초과의 순간에 미리 답해 둔다

소재의 핵심입니다 — 예산 초과는 일어나는 것이고, 문제는 그 순간의 판단입니다. 시작 전에 규칙을 정합니다.

[의사결정 규칙 — 시작 전 서명]
경로의 예산이 초과됐을 때 스스로에게 묻는다:
1. "이 경로를 계속 가야 할 새로운 근거가 최근 30분 안에 생겼는가?"
   → 예: 30분 연장권 1회 부여. 한 경로당 연장권은 1회뿐.
   → 아니오: 가설 관리표로 회귀. 이 경로는 표시(메모)만 남기고 폐기.
2. "가설표에 아직 검증 안 한 후보가 남았는가?"
   → 예: 다음 후보로.
   → 아니오: 열거로 회귀 (정보가 부족하다는 뜻 — ①으로 돌아간다).

이 규칙의 가치는 판단의 시점을 앞당기는 것입니다. 막힌 5시간 차의 뇌는 "계속"이라고 속삭입니다 — 그때 꺼내는 것이 0시간 차의 내가 쓴 규칙입니다.

2-3. 50/10 리듬 — 집중력은 의지가 아니라 사이클이다

8시간 연속 작업에서 집중력은 90분 전후로 꺾이기 시작합니다. 꺾인 뒤의 작업은 진전이 아니라 반복입니다 — 같은 명령을 다시 치고, 이미 읽은 출력을 다시 읽습니다.

대책은 50분 작업 / 10분 휴식의 사이클입니다. 규칙:

  • 10분 휴식은 화면을 끄는 휴식입니다 — 스마트폰을 보는 휴식은 집중력을 회복시키지 못합니다.
  • 휴식 알림은 물리적 타이머로 — 몰입 중엔 시계가 안 보입니다. 규칙은 장치로 지킵니다.
  • 8시간 = 50/10 사이클 8회. 식사는 4회차와 5회차 사이의 10분을 30분으로 늘려 흡수합니다 — 식사도 일정표에 있는 사람만이 제때 먹습니다.

2-4. 중간 세이브 — 8시간의 작업물을 지키는 습관

장기전의 기록은 종료 후 작업이 아니라 진행 중 작업입니다. 매 자가 보고(정시) 때 세 가지를 저장합니다.

  1. 현재 상태: 지금 어떤 쉘/접근 권한을 갖고 있는가.
  2. 검증된 사실: 확정된 정보(자격증명, 버전, 닫힌 경로).
  3. 열린 가설: 다음에 시도할 것, 우선순위 순.

이 세 가지가 있으면 중간에 끊겨도(저녁 약속, 수면, 집중력 한계) 재개 비용이 거의 0입니다. 반대로 세이브 없이 6시간을 달린 뒤 끊기면, 재개 첫 1시간이 "내가 뭘 했더라"의 복원에 소모됩니다. Medium 8시간에서 기록은 보고서가 아니라 세이브 파일입니다.


3. 따라 하기

3-1. 시작 전 — 예산표와 자가 보고 양식

처음 보는 Medium 머신을 골랐다면, 두 문서를 먼저 만듭니다.

입력 (랩타임 로그 — Step 276과 같은 형식):

열거 | 0:00

입력 (시간별 자가 보고 양식 — 매 정시 1분 투자):

[1:00 자가 보고]
- 현재 위치: (어느 구간, 무엇을 보고 있는가)
- 다음 행동: (다음 50분의 계획 하나)
- 이탈 신호: (계획에 없던 일을 하고 있지는 않은가 — 예/아니오)

: "이탈 신호" 칸이 이 양식의 핵심입니다. 열거 구간인데 익스플로잇을 돌리고 있다든가, 침투 구간인데 아직 스캔 결과를 읽고 있다든가 — 장기전의 시간 도난은 대부분 구간 불일치에서 일어나고, 정시의 1분이 그것을 잡아냅니다.

3-2. ① 열거(2시간) — 독해의 시간

Easy와 달리 Medium의 열거는 넓게 한 뒤 깊게 갑니다. 병렬화(Step 276)는 그대로 쓰되, 대기 시간의 사용처가 다릅니다 — 스캔을 기다리는 동안 이미 찾은 것을 읽습니다.

화면 예시 (열거 구간의 자가 보고):

[1:00 자가 보고]
- 현재 위치: ① 열거. 웹 앱의 회원가입 폼에서 이메일 검증 로직을 JS에서 발견, 읽는 중
- 다음 행동: /api/ 하위 엔드포인트 목록 완성 (JS에서 추출한 4개 더 있음)
- 이탈 신호: 아니오 — 스캔은 전부 백그라운드, 손은 독해에

읽는 법: 1시간 차에 "스캔 완료"가 아니라 "읽다가 발견"이 나오는 것이 Medium 열거의 정상입니다. 2:00에 끝낼 때 목표는 목록이 아니라 우선순위가 붙은 목록입니다.

3-3. ② 침투(3.5시간) — 가짜 입구와의 싸움

Medium 침투 구간의 특산물은 가짜 입구입니다 — 취약해 보이는데 막상 가면 막힌 경로. 예산 3.5시간에는 가짜 입구 1~2회의 소모가 포함돼 있으니, 한 번 속았다고 계획이 망한 것이 아닙니다.

화면 예시 (의사결정 규칙이 작동하는 로그):

[3:00 자가 보고]
- 현재 위치: ② 침투. 후보1(SQLi 추정)에 50분 소모 — 에러 기반 추정했으나 필터링에 막힘
- 규칙 적용: 최근 30분 새 근거 없음 → 연장권 안 쓰고 폐기. 메모: "후보1, 필터 우회 필요"
- 다음 행동: 후보2 (회원가입 시 중복 사용자명 응답 차이 → 계정 열거 후 기본 자격증명)

읽는 법: 3시간 차에 "폐기"가 로그에 찍히는 것은 실패가 아니라 규칙의 작동 증거입니다. Medium 8시간에서 이기는 사람은 가짜 입구에 빠지지 않는 사람이 아니라, 빠졌다가 제때 나오는 사람입니다.

3-4. ③ 상승과 마감 — 다단계 상승의 페이스

Medium의 권한 상승은 "취약 설정 하나"로 끝나지 않는 경우가 많습니다 — 사용자 A의 쉘에서 사용자 B로, 다시 root로 가는 다단계. 2시간 예산을 단계별로 나눠 생각합니다.

화면 예시 (랩타임 로그의 완성):

열거 | 0:00
열거 | 1:55
침투 | 5:10      ← user 쉘 (예산 대비 -20분)
상승 | 7:20      ← 두 번째 계정 경유 root (예산 대비 -10분)
기록 | 7:50

읽는 법: 각 줄은 "그 구간이 끝난 경과시각"입니다. 여유 구간(7:30~8:00)까지 포함해 8시간 안에 기록 마감까지 끝난 형태입니다. Step 276의 분석기에 넣을 때 예산만 바꾸면 됩니다 — BUDGET = {"열거": 120, "침투": 210, "상승": 120, "기록": 30}.

3-5. 종료 후 — 회고는 "체력"까지 채점한다

8시간 회고에는 Easy 때 없는 질문이 하나 더 있습니다.

# Medium 8시간 회고 — [머신 이름]
- 구간별 예산 대비: (표)
- 의사결정 규칙 작동 기록: 연장권 사용 0/1, 폐기 N회
- 50/10 리듬 준수율: 8회 중 N회 — 무너진 사이클의 시각과 그 직후 작업 품질
- 시간을 가장 많이 쓴 지점 TOP 3와 원인
- 다음 8시간에서 다르게 할 것 3가지

: 리듬 준수율을 적는 이유는 — 무너진 사이클 직후의 로그를 보면 대개 "같은 명령 재시도"가 있습니다. 지침이 곧 시간 손실이라는 것을 자기 로그로 확인한 사람만이 다음 판의 휴식 알림을 끄지 않습니다.


4. 미션과 연습문제

미션 — Medium 8시간 타임어택과 체력 회고

  1. 처음 보는 Medium 머신에 예산표(열거 2h / 침투 3.5h / 상승 2h / 여유 0.5h)를 세우고 시작합니다.
  2. 의사결정 규칙(2-2)을 시작 전에 문장으로 적고 서명합니다.
  3. 매 정시 자가 보고(현재 위치/다음 행동/이탈 신호)를 작성합니다 — 8회 전부.
  4. 50/10 리듬을 지키고, 식사를 4~5회차 사이 일정에 넣습니다.
  5. 매 자가 보고 때 중간 세이브(현재 상태/검증된 사실/열린 가설)를 갱신합니다.
  6. 종료 후 3-5 형식의 회고를 완성합니다 — 리듬 준수율 포함.

연습문제

문제 1. Medium의 열거 예산(2시간)이 Easy(30분)보다 네 배 긴 이유는 무엇인가요? 이 시간을 아끼려는 시도가 왜 ②를 망치는지 설명해 보세요.

문제 2. 의사결정 규칙에서 연장권을 "한 경로당 1회"로 제한하는 이유는 무엇인가요?

문제 3. 10분 휴식에 스마트폰을 보지 말아야 하는 이유를 집중력 관리의 관점에서 설명해 보세요.

문제 4. 중간 세이브의 세 항목(현재 상태/검증된 사실/열린 가설)이 "재개 비용"을 줄이는 원리를 설명해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

8시간 내 root가 이상형이지만, 소재의 완료 기준처럼 "또는 원인 분석 완료" 도 합격입니다. 검증 기준:

  1. 자가 보고 8회: 정시마다 세 칸이 채워져 있는가. 특히 "이탈 신호"에 예/아니오가 있는가.
  2. 규칙의 흔적: 경로 폐기 또는 연장권 사용이 로그에 최소 1회 기록돼 있는가 — 8시간 동안 한 번도 안 막혔다면 머신이 Medium이 아니었거나 로그가 얕은 것입니다.
  3. 세이브의 완결성: 임의의 자가 보고 하나를 뽑아, 그것만 보고 작업을 재개할 수 있는 수준인가.
  4. 회고의 정직성: 리듬 준수율이 실제 타이머 기록과 일치하는가. 8/8은 의심해 볼 것 — 장기전에서 완벽 준수는 드물고, 솔직한 6/8이 훨씬 가치 있는 데이터입니다.
  5. 체력 변수의 발견: "몇 시부터 로그의 밀도가 떨어졌는가"에 대한 관찰이 있는가.

연습문제 해답

문제 1 해답. Medium은 공격 표면의 수가 Easy의 두세 배이고, 진짜 입구가 가짜 입구 사이에 섞여 있어서 독해(JS 읽기, API 비교, 기능 시험)가 필요하기 때문입니다. 이 2시간을 아끼면 후보 목록에 우선순위가 붙지 않아, ②에서 모든 경로를 무순서로 시도하게 됩니다 — 가짜 입구에 하나씩 50분씩 태우면 3.5시간은 순식간입니다. 열거의 2시간은 침투의 5시간을 막는 보험료입니다.

문제 2 해답. 연장권이 무제한이면 규칙이 없는 것과 같아지기 때문입니다. "조금만 더"는 매 30분마다 새로운 근거처럼 느껴지지만, 대부분은 같은 기대의 재탕입니다. 1회 제한은 "이 경로에 총 2개의 예산 단위를 썼다"는 상한을 만들어, 잘못된 경로의 최대 손실을 정해 둡니다. 손실 상한이 있는 사람만이 남은 후보들에게 시간을 재배분할 수 있습니다.

문제 3 해답. 스마트폰의 정보 흐름은 새로운 자극을 계속 주입해 뇌를 작업 모드에서 빼내지 못하게 합니다 — 눈은 쉬어도 주의 시스템은 쉬지 않습니다. 10분 휴식의 목적은 "화면을 안 보는 것"이 아니라 주의 자원의 회복입니다. 화면을 끄고 창밖을 보거나 스트레칭을 해야 다음 50분의 판단력이 돌아옵니다. 휴식의 질이 8시간 차의 로그 품질을 결정합니다.

문제 4 해답. 재개 비용의 대부분은 "맥락의 재구성"이기 때문입니다 — 어디까지 했는지, 무엇이 확정이고 무엇이 미검증인지를 다시 시험해 보는 시간. 세 항목은 그 재구성을 문자 그대로 대체합니다: 현재 상태는 시작점을, 검증된 사실은 재시험 불필요 목록을, 열린 가설은 다음 행동을 줍니다. 세 줄의 갱신 비용(매 시간 1분)이 재개 1시간을 삭제합니다.

완료 기준 체크리스트

  • [ ] Medium 8시간 예산표를 시작 전에 세웠다
  • [ ] 의사결정 규칙(연장권 1회, 회귀 조건)을 문장으로 적고 서명했다
  • [ ] 매 정시 자가 보고 8회를 세 칸 모두 채웠다
  • [ ] 50/10 리듬과 식사 일정을 타이머로 지켰다 (준수율 기록)
  • [ ] 경로 폐기 또는 연장권 사용이 로그에 1회 이상 있다
  • [ ] 중간 세이브 세 항목이 매 시간 갱신됐다
  • [ ] 리듬 준수율과 체력 관찰이 포함된 회고를 완성했다

6. 흔한 실수와 해결

벽 1. 3시간 차부터 집중이 확 꺾여요

증상: 같은 출력을 세 번 읽고, 방금 친 명령을 기억하지 못합니다.

원인: 50/10 없이 3시간을 연속으로 태운 결과입니다 — 의지의 문제가 아니라 주의 자원의 고갈입니다.

해결: 이미 꺾인 상태라면 지금이라도 10분 화면을 끄세요 — 꺾인 뇌로 하는 30분은 진전이 없습니다. 다음 판부터는 시작과 동시에 50분 타이머를 맞춥니다. 그리고 회고에 기록하세요 — 꺾인 시각과 그 직후 로그의 밀도. 자기 데이터로 확인하면 휴식이 "놀기"가 아니라 페이스 전략으로 받아들여집니다.

벽 2. 가짜 입구에 예산을 다 쓰고 나서야 후회해요

증상: 5시간 차에 "처음부터 다른 경로였다"는 것을 깨닫습니다.

원인: 의사결정 규칙이 없었거나, 연장권을 연속 사용했습니다.

해결: 2-2의 규칙을 종이에 인쇄해 모니터 옆에 붙이세요 — 기억에 의존하는 규칙은 5시간 차에 작동하지 않습니다. 그리고 이번 판의 회고에는 "가짜 입구의 초기 징후"를 적으세요 — Medium의 가짜 입구는 대개 초반 15분에 신호(에러 메시지의 이상한 침묵, 응답의 불일치)를 보냅니다. 그 징후 목록이 다음 판의 폐기 속도를 높입니다.

벽 3. 자가 보고를 쓰는 게 귀찮아서 4회차부터 빠져요

증상: 로그가 3:00 이후 비어 있습니다.

원인: 자가 보고가 "작업"으로 느껴지는 순간 몰입이 항상 이깁니다.

해결: 세 칸을 한 줄로 줄이세요 — [4:00] ②침투 / 후보2 시도 / 이탈없음. 한 줄이면 30초고, 30초면 몰입도 양보합니다. 중요한 것은 형식의 완성도가 아니라 빈 시간축이 없다는 것입니다. 빈 시간축은 회고를 불가능하게 만드는 유일한 결함입니다.

벽 4. 8시간 다 쓰고 user 쉘인데, 이어서 할지 멈출지 모르겠어요

증상: "여기서 멈추면 아깝다"는 생각이 듭니다.

원인: 타임어택의 성적과 학습 욕심의 충돌 — Step 276 벽 5와 같은 문제의 장기전 버전입니다.

해결: 8시간에서 성적을 확정하고(최대 진척: user 쉘), 이후는 별도 로그의 학습 시간으로 분리합니다. 단, 장기전 특유의 조건 하나 — 오늘 이어서 하지 마세요. 8시간을 태운 뇌의 "조금만 더"는 대개 진전 없는 2시간으로 끝납니다. 세이브 파일(2-4)을 정리하고 자고, 내일 새 로그로 재개하는 것이 총 소요 시간이 짧습니다.

벽 5. 회고를 쓰려니 8시간이 하나로 뭉개져 있어요

증상: 정오 무렵의 기억이 통째로 없습니다.

원인: 자가 보고와 세이브가 도중에 무너졌습니다 — 기억은 절정 장면(쉘 획득 직전)만 남기고 나머지를 지웁니다.

해결: 이번 판은 포기하지 말고 재구성 가능한 것부터 쓰세요 — 터미널 히스토리, 스캔 출력 파일의 수정 시각, 브라우저 기록이 시간축의 뼈대가 됩니다. 그리고 다음 판의 교훈은 하나입니다 — 8시간짜리 훈련에서 기록은 종료 후 작업이 아니라 매 시간의 보험입니다.


7. 정리

오늘의 개념

개념 한 줄 설명
시간 예산 열거 2h / 침투 3.5h / 상승 2h / 여유 0.5h — Medium 8시간의 지도
의사결정 규칙 예산 초과 시 계속 vs 변경을 미리 정한 규칙 — 연장권은 경로당 1회
가짜 입구 취약해 보이지만 막히는 경로 — Medium 예산에 1~2회 포함이 정상
50/10 리듬 50분 작업 / 10분(화면 끄는) 휴식 — 집중력은 의지가 아니라 사이클
중간 세이브 현재 상태 / 검증된 사실 / 열린 가설 — 매 시간 1분의 보험
시간별 자가 보고 현재 위치 / 다음 행동 / 이탈 신호 — 장기전의 궤도 수정 장치

오늘의 도구·서식

도구·서식 하는 일
예산표 + 랩타임 로그 계획과 실측의 병행 기록 (Step 276 분석기는 예산만 바꿔 재사용)
자가 보고 세 칸 정시마다 위치·행동·이탈을 1분에 기록
연장권 규칙 한 경로의 최대 손실을 예산 2단위로 상한
세이브 세 항목 어느 시점에 끊겨도 재개 가능한 상태 유지

명령어보다 중요한 감각

8시간 훈련이 가르치는 것은 기술이 아니라 자기 관리가 실력의 일부라는 사실입니다. 5시간 차의 판단력은 0시간 차의 일정 설계가 만들고, 7시간 차의 로그는 3시간 차의 휴식이 지킵니다. 머신과 싸우는 것은 손이지만, 8시간과 싸우는 것은 시스템입니다.

그리고 이 장기전 감각이 다음 단계 — 타임어택에 발표까지 얹는 실전 점검 — 의 체력이 됩니다. 뚫는 것으로 끝나지 않는 판을 앞두고, 여러분은 이미 장거리 주자의 심장을 갖췄습니다.


전부 체크되면 Step 277 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.