EXPLORE THE CURRICULUM
나의 학습지도
전체 흐름을 살펴보고, 지금 배울 수업을 찾아보세요.
351 개의 수업
선택 초기화L0PowerShell과 WindowsStep 1–1515 수업
- 001 파워쉘 첫걸음 — 글자로 컴퓨터 조종하기파워쉘을 열고 프롬프트에서 현재 위치를 읽는다
- 002 파일 다루기 — 만들고, 복사하고, 옮기고, 지우기New-Item으로 파일과 폴더를 만든다
- 003 파이프(|) — 명령을 조립하는 사고방식파이프(|)로 명령의 출력을 다음 명령의 입력으로 넘긴다
- 004 텍스트 처리 — 로그에서 바늘 찾기Get-Content로 파일을 읽고, 긴 파일은 앞부분만 슬쩍 본다
- 005 시스템 정보 수집 — 내 컴퓨터의 건강검진표Get-ComputerInfo로 OS와 하드웨어 정보를 수집하고 필요한 항목만 골라 본다
- 006 네트워크 확인 — 내 컴퓨터의 대외 연락망 점검내 PC의 IP 주소, 기본 게이트웨이, DNS 서버를 찾아 설명한다
- 007 변수와 자료형 — 이름표 붙은 상자에 담기변수에 값을 저장하고 꺼내 쓴다
- 008 조건문과 반복문 — 컴퓨터에게 판단과 노가다를 시키기if/else로 "만약 ~라면" 판단을 코드로 옮긴다
- 009 실행 정책과 첫 스크립트 — 윈도우의 안전장치와 정면으로 만나기명령 묶음을 .ps1 스크립트 파일로 저장하고 실행한다
- 010 ★ 프로젝트: 파일 자동 분류 — 다운로드 폴더를 청소하는 로봇코드를 짜기 전에 알고리즘(처리 순서)을 우리말로 먼저 설계한다
- 011 레지스트리 탐구 — 윈도우의 금고 열어보기레지스트리를 "키와 값의 트리 구조"로 설명한다
- 012 이벤트 로그 — 윈도우의 블랙박스 읽기관리자 파워쉘을 열고, 이 권한을 "필요할 때만" 쓰는 이유를 설명한다
- 013 프로세스와 서비스 내부 — 실행의 계보를 추적하라PID가 무엇이며, 왜 이름 대신 번호로 프로세스를 지목하는지 설명한다
- 014 원격 관리 — 네트워크 너머의 컴퓨터에 명령하기원격 세션이 무엇인지, WinRM/PSRemoting의 역할과 포트 번호를 설명한다
- 015 ★ 프로젝트: 부팅 후 무슨 일이? — 자동 실행 지점 총조사영속성(persistence)이 무엇인지, 공격자가 왜 "원래 있는 문"을 이용하는지 설명한다
L0Linux와 실습 환경Step 16–3015 수업
- 016 가상화 이해 — 컴퓨터 안에 컴퓨터를 짓는다가상머신(VM)과 하이퍼바이저가 무엇인지 설명한다
- 017 우분투 설치와 스냅샷 — 실험실 입주와 세이브 포인트ISO 파일과 LTS가 무엇인지 설명한다
- 018 리눅스 기본 명령어 1 — 검은 창에서 길 찾기리눅스 파일시스템이 / 하나의 나무라는 것을 설명한다
- 019 리눅스 기본 명령어 2 — 출력을 조종하는 세 개의 수도관표준 스트림(stdin/stdout/stderr) 세 개의 관을 번호와 함께 설명한다
- 020 검색 (grep/find) — 건초더미에서 바늘 두 개 찾기grep(내용 검색)과 find(이름·조건 검색)의 역할 차이를 설명한다
- 021 패키지 관리 — 리눅스의 앱스토어, apt패키지(package)·저장소(repository)·의존성(dependency) 세 개념을 설명한다
- 022 에디터 — nano와 vim, 터미널에서 살아남기터미널 에디터가 왜 필요한지, cat이나 >로는 안 되는 이유를 설명한다
- 023 권한 1 — rwx, 파일에 새겨진 규칙ls -l 출력 맨 앞의 -rwxr-xr-- 같은 문자열을 등급별로 해석한다
- 024 권한 2 — 소유권과 sudo, 힘을 다스리는 법root(UID 0)가 무엇이며, 왜 권한 검사를 우회하는지 설명한다
- 025 사용자 관리 실험 — 인증과 인가의 경계를 넘어 보라인증(authentication)과 인가(authorization)의 차이를 예를 들어 설명한다
- 026 프로세스 관리 — 보고, 찾고, 신호를 보내라실행 중인 프로세스의 목록을 보고 PID(번호)와 PPID(부모 번호)를 찾는다
- 027 디렉토리 구조 탐구 — 리눅스 지도를 손에 넣다리눅스 최상위 폴더(/etc, /var, /bin 등)의 역할을 설명한다
- 028 bash 스크립트와 cron — 손으로 치던 명령을 자명종에 맡겨라명령어 여러 개를 파일에 모아 한 번에 실행하는 셸 스크립트를 만든다
- 029 SSH 원격 접속 — 암호화된 대문을 열다SSH가 무엇이고, 평문 통신의 어떤 문제를 해결하는지 설명한다
- 030 ★ 프로젝트: 모니터링 자동화 — 혼자 일하는 감시자 만들기모니터링이 무엇이며, 왜 "기록"이 정상의 기준선(baseline)이 되는지 설명한다
L0네트워크 기초Step 31–4010 수업
- 031 IP 주소 완전 이해 — 동네 이름과 집 번호IPv4 주소가 사실은 32비트 숫자임을 설명한다
- 032 MAC 주소와 ARP — 전선 위의 진짜 주소IP 주소와 MAC 주소의 차이를 세 가지 관점(누가 주나, 바뀌나, 어디서 쓰이나)으로 설명한다
- 033 DNS — 인터넷의 전화번호부DNS가 "이름 → IP"를 바꿔 주는 계층적 시스템임을 설명한다
- 034 포트와 서비스 — 건물 안의 호수포트가 무엇이며 IP와 어떻게 다른지(건물과 호수) 설명한다
- 035 TCP 심화 — 악수의 기술TCP가 "연결 지향"이라는 말의 뜻을 설명한다
- 036 UDP와 ICMP — 던지는 배달부와 상태 신고 전화TCP와 UDP의 차이를 "빠진 것을 다시 받는 게 의미 있는가"라는 기준으로 설명한다
- 037 라우팅과 게이트웨이 — 편지의 여정을 따라가라라우터와 홉(hop)이 무엇인지 설명한다
- 038 NAT와 공유기 — 변장 담당 문지방의 비밀사설 IP 세 구역을 말하고, 주어진 주소가 사설인지 공인인지 구분한다
- 039 OSI 7계층 — 아홉 조각을 올리는 지도OSI 7계층을 순서대로 말하고, 각 층의 역할을 한 줄로 설명한다
- 040 Level 0 종합 테스트 — 스스로에게 시험을 보다Level 0 전체에서 무엇을 알고 무엇을 모르는지 정확히 파악한다
L1Python 프로그래밍Step 41–5515 수업
- 041 파이썬 환경 세팅과 첫 코드 — 작업대를 세우는 날파이썬을 설치하고 python --version으로 PATH 등록까지 확인한다
- 042 자료형 심화 — 값을 담는 네 가지 바구니리스트를 만들고 인덱스로 꺼내고 append로 추가한다
- 043 조건문과 반복문 — 판단하고 반복하는 코드if/elif/else로 조건에 따라 다르게 행동하는 프로그램을 쓴다
- 044 함수와 모듈 — 부품을 만들어 조립하다def와 return으로 함수를 정의하고 호출한다
- 045 파일 입출력 — 기억하는 프로그램 만들기with open()으로 파일을 만들고, 쓰고, 읽는다
- 046 예외처리와 디버깅 — 넘어져도 다시 일어나는 프로그램오류 메시지(트레이스백)를 아래부터 읽어 원인과 현장을 찾는다
- 047 ★ 프로젝트: 가위바위보 — 설명서 없이 완성하는 첫 게임코딩 전에 다섯 줄 설계(할 일, 입력, 출력, 규칙, 사고)를 종이에 적는다
- 048 정규표현식 — 모양으로 찾는 자석d, w, ., +, *, {n,m}의 뜻을 설명하고 패턴을 조립한다
- 049 ★ 프로젝트: 비밀번호 도구 — 첫 번째 보안 도구를 만든다비밀번호 강도가 조합 수(곱셈)로 결정됨을 숫자로 설명한다
- 050 인코딩 탐구 — 글자와 숫자 사이의 다리문자가 컴퓨터 안에서 숫자로 저장되는 원리를 ord/chr 실험으로 확인한다
- 051 표준 라이브러리 — 파이썬에 이미 들어 있는 도구 상자표준 라이브러리가 무엇인지 설명하고, 필요한 모듈을 찾아 import한다
- 052 클래스와 객체지향 — 데이터와 동작을 한 상자에클래스(설계도)와 인스턴스(물건)의 관계를 설명한다
- 053 pip와 가상환경 — 세계의 도구를 내 방에 들이는 법pip과 PyPI가 무엇인지, 의존성이 무엇인지 설명한다
- 054 알고리즘 훈련 1 — 문제를 코드로 번역하는 근육백준에 가입하고 문제를 읽고 코드를 제출해 채점받는 전체 순환을 돌린다
- 055 ★ 프로젝트: 로그 분석기 — 기록 더미에서 발자국을 골라내라로그(log)가 무엇이고 왜 보안 분석의 기본 재료인지 설명한다
L1C와 컴퓨터 내부Step 56–7015 수업
- 056 C 시작 — 기계가 직접 아는 언어로해석 언어(파이썬)와 컴파일 언어(C)의 차이를 설명한다
- 057 C 제어문과 함수 — 같은 생각, 다른 표기C의 if, for, while을 파이썬과 대응시켜 쓴다
- 058 포인터 1 — 주소를 손에 쥐는 날모든 변수가 메모리의 주소에 산다는 사실을 %p 출력으로 확인한다
- 059 포인터 2: 배열 — 붙어 있는 칸들의 법칙배열이 "메모리에 붙어 있는 칸들"임을 주소 출력으로 확인한다
- 060 메모리 구조 — 실행 중인 프로그램의 지도실행 중인 프로그램의 메모리가 네 영역(코드/데이터/힙/스택)으로 나뉨을 설명한다
- 061 malloc과 free — 힙에서 빌리고 반납하라malloc으로 실행 중에 필요한 만큼 메모리를 빌리고, sizeof와 함께 쓴다
- 062 실험: 버퍼 오버플로우 — 넘친 입력의 행선지버퍼가 무엇이며, 왜 넘치는지 설명한다
- 063 컴파일 과정 — 네 명의 일꾼이 바톤을 넘긴다gcc hello.c -o hello 한 줄 뒤의 네 단계(전처리, 컴파일, 어셈블, 링크)를 순서대로 말한다
- 064 어셈블리 첫 만남 — 내 코드의 최종 실체어셈블리어가 무엇인지(기계어의 인간 판독판) 설명한다
- 065 CPU와 레지스터 — 실행의 심장 박동을 보다CPU가 계산을 메모리가 아닌 레지스터에서 하는 이유를 설명한다
- 066 실행 파일의 구조 — 아이콘 속의 설계도실행 파일이 "설명서(헤더) + 용도별 구역(섹션)"으로 이루어져 있음을 설명한다
- 067 운영체제의 역할 — 모든 부탁은 커널에게커널이 무엇이고 왜 프로그램이 하드웨어를 직접 못 건드리는지 설명한다
- 068 프로세스의 실체 — fork 실험프로세스와 PID, PPID를 설명하고 ps와 pstree로 관찰한다
- 069 가상 메모리 — 모든 프로세스의 달콤한 착각가상 주소와 물리 주소의 차이, 그리고 둘을 잇는 페이지 테이블의 역할을 설명한다
- 070 프로젝트 — C로 메모리 관찰 도구 만들기자기 자신의 메모리 주소 지도를 그려 주는 C 프로그램 memmap을 완성한다
L1웹의 기본 구조Step 71–766 수업
- 071 HTML/CSS 기초 — 웹페이지의 뼈대와 옷빈 파일에서 시작해 제목·문단·링크·이미지·목록·입력창이 있는 웹페이지를 손으로 만든다
- 072 JavaScript 기초 — 웹페이지를 살아 있게 하는 언어파이썬과 비교해 JS 기초 문법(let/const, function, console.log)을 쓴다
- 073 HTTP 완전 이해 — 웹의 대화 규칙python -m http.server로 내 컴퓨터에 실습용 웹서버를 띄운다
- 074 requests 라이브러리 — 파이썬으로 웹과 대화하기POST와 쿠키를 이해하는 연습용 서버(lab.py)를 파이썬으로 직접 만든다
- 075 BeautifulSoup 크롤링 — HTML에서 원하는 것만 뽑기BeautifulSoup(문자열, "html.parser")로 HTML 문자열을 탐색 가능한 구조로 바꾼다
- 076 크롤러와 자동화 — 매일 혼자 일하는 수집기python -m http.server로 로컬 연습 사이트를 띄울 수 있다
L1네트워크 도구 만들기Step 77–859 수업
- 077 소켓 통신 1 — TCP echo 서버와 클라이언트소켓이 "프로그램과 프로그램 사이의 통신 끝점"임을 코드로 설명한다
- 078 소켓 통신 2 — 멀티 클라이언트 채팅 서버스레드가 "같은 프로세스 안에서 메모리를 공유하는 실행 흐름"임을 설명한다
- 079 포트 스캐너 — 열린 문을 찾아내는 정찰기포트 스캔의 원리가 "접속 시도(connect)"임을 직접 만든 도구로 설명한다
- 080 Scapy 입문 — 패킷 수작업 공방패킷이 Ethernet/IP/TCP/데이터로 겹쳐진 다층 구조임을 show() 출력으로 읽는다
- 081 nmap 완전 정복 — 정찰의 표준 도구nmap의 주요 옵션(-sT/-sS/-sV/-O/--script)을 상황에 맞게 고른다
- 082 프로젝트 — 네트워크 지도와 위험도 평가자산(asset), 공격 표면(attack surface), 위험도 세 용어를 정의하고 실습에 적용한다
- 083 Wireshark 1 — 캡처와 필터, 네트워크의 현미경네트워크 인터페이스를 골라 캡처를 시작하고 멈춘다
- 084 Wireshark 2 — 프로토콜 파헤치기와 이상 탐지TCP 3-way 핸드셰이크를 실제 캡처에서 세 패킷으로 찾아낸다
- 085 프로젝트 — HTTP vs HTTPS 비교 보고서로컬에 평문 웹 서버를 열고, 요청/응답이 패킷에 글자 그대로 실리는 것을 캡처로 증명한다
L1개발 도구와 통합 프로젝트Step 86–9510 수업
- 086 Git 기초 — 코드의 타임머신저장소, 커밋, 스테이징이라는 세 개념으로 Git의 작동 구조를 설명한다
- 087 GitHub 원격 저장소와 포트폴리오 — 백업이자 전시장로컬 저장소와 원격 저장소의 관계, push와 pull의 방향을 설명한다
- 088 브랜치와 merge — 평행우주와 합치기브랜치와 HEAD의 실체가 "커밋을 가리키는 화살표"임을 설명한다
- 089 마크다운 문서화 — 나만의 개인 위키마크다운 핵심 문법 일곱 개로 기술 문서를 작성한다
- 090 프로젝트 — XOR 파일 암호화/복호화 도구XOR의 복원 성질(A ⊕ K ⊕ K = A)을 파이썬 ^ 연산으로 보여 준다
- 091 리눅스 복습 — OverTheWire Bandit 0~10SSH로 원격 서버에 접속하고 종료할 수 있다 (ssh 사용자@주소 -p 포트)
- 092 SQL 기초 1 — 데이터베이스와 대화하기 (CRUD)sqlite3에 진입해 표(테이블)를 만들고 나올 수 있다
- 093 SQL 기초 2 — JOIN과 파이썬 연동두 테이블을 ON 조건으로 JOIN해 조회할 수 있다
- 094 Flask 맛보기 — 웹 서버를 직접 만든다Flask로 라우트 2개 이상의 서버를 띄울 수 있다
- 095 Level 1 종합 프로젝트 — 네트워크 감시 도구 완성하기요구사항 명세만 보고 완성품을 만들 수 있다
L2워게임 시작하기Step 96–10510 수업
- 096 Bandit 0~5 — 워게임 풀이 사이클SSH로 원격 서버에 접속하고 포트를 지정할 수 있다
- 097 Bandit 6~10 — find 조건 검색 마스터find의 조건(-user, -group, -size, -perm, -mtime, -writable)을 AND로 조합해 원하는 파일만 정확히 뽑는다
- 098 Bandit 11~15 — 인코딩과 네트워크 접속tr로 ROT13 등 문자 치환을 수행하고 원리를 설명한다
- 099 Bandit 16~20 — setuid 첫 만남포트 범위 스캔으로 열린 서비스를 찾고 TLS 여부를 확인한다
- 100 Bandit 21~25 — cron 악용 사고방식/etc/cron.d/를 읽고 "누구 권한으로 무엇이 언제"를 해석한다
- 101 Bandit 26~30 — git 이력에서 비밀 캐기, 그리고 완주제한된 쉘 환경에서 more/vim 경유로 파일을 읽는 우회의 개념을 설명한다
- 102 Natas 0~5 — 웹 워게임의 문을 열다새 사이트를 만나면 소스 보기→주석 검색→robots.txt→경로 추측의 정찰 루틴을 수행한다
- 103 Natas 6~10 — 서버 코드 읽기와 명령어 인젝션PHP 소스에서 include 경로와 비교 로직을 찾아 읽는다
- 104 Natas 11~15 — XOR 분석과 첫 SQL Injection반복 키 XOR 암호에서 알려진 평문 공격(known-plaintext attack)으로 키를 복구한다
- 105 ★ 점검 — 워게임 기법 목록화Bandit 0~30, Natas 0~15에서 쓴 기법을 누락 없이 나열한다
L2Linux 보안 기초Step 106–1105 수업
- 106 리눅스 권한 심화 — setuid, setgid, sticky bitsetuid·setgid·sticky bit의 동작을 각각 한 문장으로 설명한다
- 107 리눅스 로그 탐구 — /var/log/var/log의 주요 파일(auth.log, syslog, kern.log, wtmp 등)의 역할을 말한다
- 108 환경변수와 PATH 인젝션환경변수가 무엇이며 export와 $변수로 읽고 쓴다
- 109 심볼릭 링크와 하드링크 — 파일의 또 다른 이름파일의 실체(inode)와 이름이 분리되어 있다는 구조를 설명한다
- 110 프로젝트: "리눅스 권한 모델의 허점" 정리 문서 — 공격자의 눈으로 복습한다리눅스 권한 우회 지점 4종을 "조건 / 발견 방법 / 악용 방법 / 방어법"의 4단 구조로 정리한다
L2실습 환경과 침투 과정Step 111–13020 수업
- 111 Kali Linux 설치 — 공격자의 작업대를 마련한다Kali Linux가 무엇이며 왜 보안 업계의 표준 작업 환경인지 설명한다
- 112 Metasploitable2 설치와 격리 랩 구성 — 안전한 사격장의 완성의도적 취약 VM이 무엇이며 왜 존재하는지 설명한다
- 113 정찰 1: 타깃 서비스 전수 조사 — 공격은 목록 작성에서 시작된다공격 표면(attack surface)이 무엇인지 설명하고 전수 스캔으로 열거한다
- 114 정찰 2: 취약점 스캐너와 결과 읽기 — 스캐너는 후보 생성기다nmap의 vuln 스크립트 카테고리로 취약점 후보를 자동 수집한다
- 115 CVE 읽는 법: NVD와 Exploit-DB — 번호 하나에 담긴 이야기CVE 번호의 구조(연도-일련번호)를 설명하고, CVE·NVD·Exploit-DB의 역할 차이를 말한다
- 116 Metasploit 입문 — 공격의 표준 조립 공장msfconsole을 실행하고 프롬프트의 변화(일반 셸 → msf 셸)를 인식한다
- 117 ★ 첫 쉘: vsftpd 백도어로 MS2 장악 — 인생 첫 원격 명령 실행Metasploit에서 exploit를 실행해 첫 원격 쉘을 얻는다
- 118 바인드 쉘 vs 리버스 쉘 — 연결의 방향이 전부다바인드 쉘과 리버스 쉘을 nc로 각각 만들어 명령을 실행한다
- 119 netcat 완전 정복 — 네트워크의 스위스 아미 나이프nc의 두 가지 모드(리스너/클라이언트)를 상황에 맞게 고른다
- 120 수동 익스플로잇 1: 프레임워크 없이 공격 — 버튼 뒤의 동작을 손으로 재현한다vsftpd 백도어를 Metasploit 없이 nc만으로 수동 발동시킨다
- 121 수동 익스플로잇 2: 레퍼토리 확장 — 서비스마다 열리는 문이 다르다숨겨진 경로 탐색(디렉터리 버스팅)의 원리를 직접 만든 서버로 실증한다
- 122 패스워드 공격 1: hydra 온라인 브루트포스 — 살아있는 문을 두드리는 공격온라인 브루트포스의 원리(워드리스트 대입)를 직접 만든 도구로 설명한다
- 123 패스워드 공격 2: John the Ripper 오프라인 크래킹 — 훔친 해시는 조용히 깨진다/etc/shadow 한 줄의 형식(계정·알고리즘·솔트·해시)을 읽는다
- 124 패스워드 공격 3 — hashcat과 공격 모드GPU 크래킹이 CPU보다 빠른 이유를 코어 구조로 설명한다
- 125 권한 상승 입문 — 쉘에서 root로제한된 쉘에서 시스템 정보·계정·권한을 열거하는 정찰 명령을 실행한다
- 126 열거 자동화 — linPEAS수동 열거 명령 묶음을 직접 실행해 어떤 정보가 나오는지 안다
- 127 후속 침투(Post-Exploitation) 체크리스트 — 쉘 다음의 시작쉘 획득 직후 수집해야 할 정보의 항목들을 분류해 말할 수 있다
- 128 ★ 프로젝트 — MS2 완전 공략 보고서침투 테스트 보고서의 표준 구조(요약~권고)를 설명할 수 있다
- 129 VulnHub 취약 VM 추가 공략 — 처음 보는 타깃에 루틴을 통째로 적용한다VulnHub에서 입문용 머신을 골라 Host-only 랩에 합류시킬 수 있다
- 130 ★ 점검: 타임어택 모의 침투 — 6시간 안에 전 과정을 돌린다6시간 침투 훈련의 시간 배분표를 세우고 지킬 수 있다
L2웹 보안 기초Step 131–15525 수업
- 131 웹 서버 직접 만들기 — 로그인과 세션sqlite3 DB에 계정을 만들고 로그인 검증을 구현할 수 있다
- 132 Burp Suite 1: 프록시 가로채기 — 브라우저와 서버 사이에 끼어들기프록시가 브라우저와 서버 사이에서 무엇을 하는지 설명할 수 있다
- 133 Burp Suite 2: Repeater와 Intruder — 반복 실험대와 자동 기관총잡은 요청을 Repeater로 보내 반복 실험할 수 있다
- 134 쿠키와 세션 공격 — 서버가 믿는 신분증을 흔들다쿠키와 세션이 로그인 상태를 유지하는 구조를 요청·응답 헤더 수준에서 설명한다
- 135 DVWA 세팅과 SQLi 기초 — Low와 Medium을 넘다DVWA를 Docker로 띄우고 보안 난이도를 조절할 수 있다
- 136 SQLi 심화 — UNION으로 데이터베이스 통째로 빼내기UNION SELECT가 두 결과를 합치는 규칙(컬럼 수 일치)을 설명한다
- 137 Blind SQLi와 sqlmap — 보이지 않아도 빼낸다Boolean-based Blind SQLi의 오라클(참/거짓 답변 장치) 원리를 설명한다
- 138 XSS 기초 — Reflected와 Stored, 브라우저 안의 배신자XSS가 SQL 인젝션과 다른 점(공격 대상이 브라우저)을 설명한다
- 139 XSS 심화: 쿠키 탈취와 필터 우회 — alert를 넘어 세션을 훔친다document.cookie를 공격자 서버로 보내는 실전형 XSS 페이로드를 작성한다
- 140 CSRF: 요청 위조 — 피해자의 브라우저가 대신 클릭한다브라우저의 쿠키 자동 전송 특성이 CSRF를 가능하게 하는 원리를 설명한다
- 141 파일 업로드 공격: 웹쉘 — 게시판에서 서버 장악까지웹쉘이 무엇이고 "업로드 1개가 서버 장악"으로 이어지는 체인을 설명한다
- 142 웹쉘 심화: 직접 작성과 원리 — 한 줄짜리 문을 직접 만든다웹쉘의 핵심 구조(입력 → 실행 → 출력)를 한 줄씩 설명한다
- 143 명령어 인젝션 — 검색창이 서버의 터미널이 되는 순간명령어 인젝션의 성립 조건(입력 결합 + 셸 실행)을 코드에서 찾아낸다
- 144 파일 포함: LFI/RFI — 서버가 "읽어 주는 파일"을 내가 고른다LFI와 RFI의 차이를 include의 동작 방식으로 설명한다
- 145 디렉토리 탐색과 정보 노출 — "주소를 모르면 안전하다"는 착각강제 브라우징(forced browsing)의 원리와 gobuster의 기본 사용법을 안다
- 146 인증 공격 종합 — 정문을 두드리는 네 가지 방법기본 자격증명 점검이 실전 침투의 "첫 5분"인 이유를 설명한다
- 147 ★ DVWA 전 난이도 + 3단 정리표 — 취약점 하나를 "완전히" 안다는 것DVWA 난이도가 올라갈 때 방어 코드가 어떻게 진화하는지 코드 수준에서 설명한다
- 148 OWASP Juice Shop 1: 현대적 웹앱 입문 — 공격 무대가 바뀌었다SPA(싱글 페이지 앱)와 전통 웹앱의 구조 차이를 설명한다
- 149 Juice Shop 2 — 접근 제어와 IDORIDOR이 생기는 조건("인증은 하되 인가를 안 한다")을 설명한다
- 150 Juice Shop 3 — JWT와 비즈니스 로직JWT의 세 덩어리(헤더.페이로드.서명)를 분해하고 내용을 읽는다
- 151 드림핵 웹 입문 — 첫 실전 문제드림핵 워게임의 문제 구성 요소(제목·설명·URL·플래그 제출)를 안다
- 152 드림핵 웹 (누적 16) — 기법의 변형 인식같은 취약점이 다른 기능(검색창, 다운로드, 장바구니)에 숨는 방식을 설명한다
- 153 드림핵 웹 (누적 24) — 리서치로 돌파하기문제에서 기술 스택(Flask, PHP 등)을 식별해 검색 키워드의 재료로 쓴다
- 154 드림핵 웹 (누적 32) — 약점 목록과 문제 선별 전략풀이 기록을 CSV 형식(날짜·문제명·유형·소요분·결과)으로 유지한다
- 155 ★ 프로젝트 — 취약 웹 타깃 독립 공략과 보고서미지의 웹 타깃에 대해 정찰 → 기능 매핑 → 가설 → 검증의 순서를 스스로 진행한다
L2네트워크와 인증Step 156–16611 수업
- 156 MITM 입문 — ARP 스푸핑 1: 신분증 없는 프로토콜ARP 요청(who-has)과 응답(is-at)의 구조와 필드를 설명한다
- 157 ARP 스푸핑 2 — 양방향 가로채기와 평문의 최후단방향과 양방향 스푸핑의 차이를 "무엇이 보이는가"로 설명한다
- 158 패킷 스니핑 심화 — 필터 두 얼굴과 대화 재조립캡처 필터(BPF 문법)와 표시 필터(Wireshark 문법)의 차이를 설명하고 구분해 쓴다
- 159 DNS 스푸핑과 bettercap — 전화번호부를 바꿔치기하다DNS 질의/응답 패킷의 구조(질문 레코드와 응답 레코드)를 설명한다
- 160 SSL/TLS와 HSTS — 중간자를 막는 신분증 제도TLS 핸드셰이크의 단계(Client Hello → 인증서 → 키 합의 → 암호문 통신)를 설명한다
- 161 방화벽과 iptables — 문지기의 규칙을 설계하다체인(INPUT/OUTPUT/FORWARD)과 타깃(ACCEPT/DROP/REJECT)의 의미를 설명한다
- 162 프록시와 익명화 — 대리인 뒤에 숨는 기술과 그 한계포워드 프록시와 리버스 프록시의 차이를 "누구를 대리하는가"로 설명한다
- 163 SSH 터널링과 포트 포워딩 — 암호화된 통로에 다른 길을 싣다로컬(-L), 리모트(-R), 다이나믹(-D) 포워딩의 방향 차이를 그림으로 설명한다
- 164 열거(Enumeration) 도구 총정리 — 돌 하나하나 뒤집는 체계열거 상황(외부 네트워크 / 웹 / 호스트 내부)에 맞는 도구를 지체 없이 고른다
- 165 패스워드 스프레이와 크리덴셜 스터핑 — 잠금을 피해 가로로 걷는 공격온라인 패스워드 공격을 수직(브루트포스) / 수평(스프레이) / 재사용(스터핑)으로 분류한다
- 166 무선 보안: WPA2와 핸드셰이크 — 공기 중에 떠도는 열쇠 재료WPA2 4-way 핸드셰이크의 네 메시지를 순서대로 설명한다
L2보안 관점과 종합 실습Step 167–1759 수업
- 167 사회공학: 인간 해킹 — 방화벽을 우회하는 한 통의 메일사회공학이 "기술이 아니라 심리를 공격하는" 기법임을 사례로 설명한다
- 168 악성코드 구조: 트로이목마와 랜섬웨어 — 만들지 않고 해부하기바이러스/웜/트로이목마/랜섬웨어를 번식 방식 기준으로 구분한다
- 169 암호화와 탐지 회피 개념 — 숨기는 자와 찾는 자의 군비 경쟁난독화와 암호화의 차이를 "되돌리는 열쇠" 관점에서 설명한다
- 170 OSINT 입문 — 소셜미디어 수집과 디지털 발자국OSINT의 정의와 합법의 경계(공개 정보·목적·동의)를 설명한다
- 171 OSINT 심화 — 서브도메인과 자산 열거수동(passive) 열거와 능동(active) 열거의 차이를 설명한다
- 172 ★ 종합 시나리오 1 — 정찰부터 쉘까지정찰 → 스캔 → 열거 → 가설 → 검증 → 쉘의 킬 체인을 독립 수행한다
- 173 시나리오 1 복기와 침투 보고서 — 기록을 문서로 엮는 기술타임라인 기록에서 공격 경로를 재구성한다
- 174 종합 시나리오 2: 웹 침투 → 내부 확장 — 입구 하나가 전체를 연다체인 공격(chain attack)이 무엇인지 설명하고, 웹 침투에서 root까지의 다섯 단계를 나열한다
- 175 Level 2 종합 평가: 공격/방어 대응표 — 양면 사고의 완성Level 2의 주요 공격 기법을 각각 짝이 되는 방어와 한 쌍으로 설명한다
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개)을 증거와 함께 검증한다
L4심화 침투 실습Step 304–31310 수업
- 304 OSCP 시험 이해와 준비 로드맵 — 실기 24시간의 전장 규칙OSCP 시험의 구조(시간, 머신 구성, 보고서 규정)를 설명할 수 있다
- 305 연습 머신 공략 시작 — 한 대당 보고서 한 부OSCP 유사 머신 목록에서 난이도와 유형에 맞는 머신을 선정한다
- 306 열거의 철저함 — "Try Harder"의 실체"Try Harder"의 진짜 의미를 "열거로의 회귀"로 정의할 수 있다
- 307 ★ 프로젝트 — 시험 형식 보고서 템플릿 확정OSCP 보고서 요건(재현 가능 서술, 증거 스크린샷 규칙)을 템플릿 구조로 옮긴다
- 308 AD 세트 공략 훈련 — 클라이언트에서 도메인 컨트롤러까지OSCP AD 세트의 구성(클라이언트 → 서버 → DC)과 점수 구조를 설명할 수 있다
- 309 ★ 첫 24시간 모의시험 — 시계와 싸우는 법을 배우는 하루실전과 동일한 규칙(금지 도구, 증거 수집, 외부 풀이 금지)의 24시간 모의시험 세트를 구성한다
- 310 모의시험 실패 패턴 분석과 보완 — 못 푼 머신은 세 종류다미해결 머신을 실패 유형(기술 부재/열거 누락/시간 관리/체력 붕괴/보고서 미비)으로 분류한다
- 311 ★ 두 번째 24시간 모의시험 — 보완이 먹혔는지 재는 검증의 날Step 310의 보완 산출물을 "개선 목록"으로 정리해 두 번째 시험의 적용 항목을 확정한다
- 312 ★ OSCP 실기 시험 응시 — 연습한 대로만 하는 24시간시험 전날의 준비 체크리스트(장비·규정·컨디션)를 실행한다
- 313 OSCP 회고와 다음 계획 — 결과가 나오기 전에 할 일시험의 시간대별 타임라인(언제 무엇을 풀었고 어디서 묶였는지)을 재구성한다
L4취약점 연구와 기여Step 314–32310 수업
- 314 버그바운티 시작 — 제도 이해와 첫 타깃 선정버그바운티 제도의 구조(플랫폼·프로그램·트리아지)를 설명한다
- 315 실서비스 정찰 — 공격 표면 매핑수집 → 생존 확인 → 분류 → 지도의 정찰 체인 4단계를 순서대로 실행한다
- 316 취약점 탐색 — 기능별 체계적 접근"스캐너 의존"이 왜 초보의 함정인지 설명한다
- 317 후보 검증과 영향도 확인"버그인가 아닌가"의 판정 기준(재현성 + 보안 영향)을 적용한다
- 318 인정받는 제보서 작성제보서의 표준 구조(요약·재현 단계·영향도·수정 제안·증거)를 설명한다
- 319 첫 제보 제출과 트리아지 대응 — 버튼을 누른 뒤가 진짜 시작제보가 접수된 뒤 거치는 트리아지 흐름(접수 → 검토 → 판정)을 설명한다
- 320 1-day 취약점 분석 — 패치 diff로 원리 파악1-day 취약점과 패치 diff 분석이 무엇인지, 왜 강력한지 설명한다
- 321 CVE 재현과 분석 보고서 공개 — 분석의 증명은 재현이다"취약 버전 성공 + 패치 버전 차단"이라는 재현 증명의 구조를 설명한다
- 322 두 번째 CVE 독립 분석 — 혼자 서는 분석 사이클1-day 분석 전 사이클을 체크리스트만 보고 혼자 수행한다
- 323 오픈소스 도구 공개와 커뮤니티 기여 — 코드를 작품으로공개할 도구를 고르고 코드를 "남이 쓸 수 있는 상태"로 정리한다
L4대회 경험 넓히기Step 324–3296 수업
- 324 국내 대회 예선 출전 — 본선 진출 도전: 총점이 영웅을 이긴다예선 당일 운영의 네 기구(팀 채널, 문제 분배, 시간 관리, 교대 규칙)를 설명하고 실행한다
- 325 본선 대비 집중 훈련 — 아는 것을 확실히 하는 2주본선 형식(장시간 제퍼디/공격-방어/발표 포함)을 조사하고 형식별 대비의 차이를 설명한다
- 326 본선 출전 — 최고 수준의 경험: 압박 속에서 우리의 계획을 실행한다오프라인 본선의 환경 차이(현장 분위기, 네트워크, 운영 규칙)를 설명하고 대비한다
- 327 우승팀과의 격차 분석 — "무엇이"가 아니라 "왜"를 해부한다격차의 네 유형(기법·도구화·관점·운영)을 정의하고 실제 사례에 적용한다
- 328 국제 대회 출전 — 글로벌 대회 경험: 세계의 천장을 보고 온다국제 대회와 국내 대회의 차이(규모·난이도·시간대·언어)를 설명하고 각각의 대응을 세운다
- 329 세계 최고 수준의 신기법 분석 — Write-up이 곧 교과서다대회가 끝난 뒤 상위 팀 Write-up을 체계적으로 수집하는 절차를 설명한다
L4지식 공유와 커리어Step 330–3356 수업
- 330 최신 지식 흡수 루틴 구축 — 좋은 채널을 구독하는 사람이 이긴다보안 정보 채널을 세 계층(컨퍼런스·블로그·뉴스레터)으로 분류해 설명한다
- 331 멘토링 시작 — 가르치며 배우기: 설명할 수 없으면 모르는 것파인만 기법의 원리를 설명하고, 멘토링이 왜 "최고의 복습"인지 논한다
- 332 세미나 발표 자료 제작 — 청중이 가져갈 것의 설계"내가 잘하는 것 중 청중에게 유용한 것"의 기준으로 발표 주제를 선정한다
- 333 공개 발표와 자료 공유 — 커뮤니티에 이름을 새기다발표 기회의 세 경로(동아리·온라인 밋업·직접 개최)를 설명하고 하나를 실행한다
- 334 포트폴리오 통합 — 실력의 증명 패키지: 흩어진 증거를 하나의 이야기로흩어진 자산(글·보고서·저장소·대회·자격·발표)을 스크립트로 인벤토리화한다
- 335 커리어 방향 확정 — 보안의 갈래에서 나의 길을 고른다보안 커리어의 주요 갈래 네 개 이상을 일상과 요구 역량의 차이로 구분해 설명한다
L4대회 도전과 회고Step 336–3405 수업
- 336 국내 대회 우승 도전 — 전력의 총결집: 24시간의 규율이 우승을 만든다팀 전력을 분야별로 최종 점검하고 약점 분야의 보강 여부를 판단한다
- 337 승패 분석과 다음 도전 설계 — 승리든 패배든 데이터다대회 결과를 문제별 분석표(솔브 여부·소요 시간·우승팀 대조)로 구조화한다
- 338 약점 집중 훈련 — 최상위권 완성: 잘하는 것을 더 하는 함정을 탈피한다약점 분야의 기출 문제를 난이도 순으로 정렬해 훈련 계획을 세운다
- 339 최고 수준의 승부 — 국내 재도전 또는 국제 파이널: 실력 차이는 작고, 운영이 승부를 가른다최고 수준 대회에서 "실력 외 변수"가 승부를 가르는 구조를 설명한다
- 340 대회 여정 전체 회고록 — 경험을 이야기로 만드는 자산화흩어진 대회 기록을 "기록 없음" 규칙을 지키며 한곳에 수집한다
L4다음 분야와 종합 실습Step 341–3444 수업
- 341 다음 성장 축 탐색 — 클라우드/모바일/IoT 보안: 지금까지 쌓은 기초 위에 얹을 새 레이어클라우드·모바일·IoT·AI 보안 네 영역의 공격 표면과 대표 자료를 설명한다
- 342 새 분야 착수 — Level 0의 자세로, 검증된 방법론을 들고선정 영역의 표준 입문 경로(공식 문서·입문 랩·커뮤니티 커리큘럼)를 찾아 목차를 확정한다
- 343 종합 침투 시나리오 — 전체 역량의 운용: 기술의 나열에서 작전으로목표·시작점·규칙의 세 요소로 침투 시나리오를 정의한다
- 344 침투 플레이북 v2.0 — 경험이 매뉴얼이 되는 순환v1.0 이후 축적된 자산(체크리스트·타임라인·교훈)을 전수 수집해 개정 후보 목록을 만든다