logo
|
Blog
  • Vulnerability Research
  • AI for Security
  • Cybersecurity Training
  • Security for AI
  • Web3
  • Culture
  • ENKO
Cybersecurity Training

워게임 실력 늘리는 Writeup(라이트업) 작성법 - 놓치기 쉬운 작성 Tip 4가지

해킹 실력을 향상시킬 수 있는 효과적인 방법, Writeup 작성 Tip을 소개합니다. 잘 쓴 풀이의 특징, 실제 작성 방법, 다른 사람의 풀이를 읽는 법까지 예시와 함께 확인해 보세요!
Dreamhack's avatar
Dreamhack
Jul 03, 2026
워게임 실력 늘리는 Writeup(라이트업) 작성법 - 놓치기 쉬운 작성 Tip 4가지
Contents
문제를 푸는 것과 설명할 수 있는 것의 차이Writeup(라이트업)이란?Writeup을 잘 쓰는 방법1. ‘왜’를 포함해 보세요.1-1. Writeup 예시 - pwnable2. 풀면서 기록하는 습관을 가져요.3. 따라 할 수 있도록 작성해요.4. 실패한 시도도 포함해 보세요.4-1. Writeup 예시 - crypto실력을 키우는 Writeup 읽는 방법

티오리 해커 24인의 해킹 공부 루틴 게시글에서 현직 해커들이 입문할 때 가장 도움 되었던 방법으로 워게임, CTF 문제 풀기와 Writeup 보고 문제 이해하기를 공통적으로 언급했었는데요.

막연히 문제만 풀고 풀이만 본다고 정말 실력이 좋아질까?
더 효과적인 방법은 없을까?

고민하고 계신 분들을 위해 준비했습니다. 실력을 향상시키기 위한 워게임 문제 풀이 작성 방법!

대부분은 문제를 풀고 플래그를 제출하는 순간 다음 문제로 넘어가죠. 그게 당연한 흐름처럼 느껴지기도 하고, Writeup을 쓰는 게 번거롭게 느껴지기도 하니까요. 하지만 내가 푼 문제를 누군가에게 설명하려고 할 때는 유독 어렵게 느껴졌던 경험 한 번쯤 있을 겁니다. 분명 풀었는데 막상 설명하려니 어디서부터 말해야 할지 먹먹해지는 순간이요. Writeup은 그 간극을 메우는 작업입니다.

이번 게시글에선 실력을 향상시키기 위해 어떻게 풀이를 작성하면 좋을지, 예시와 함께 정리할게요.

문제를 푸는 것과 설명할 수 있는 것의 차이

문제(실)를 풀고 있는 드림핵 캐릭터 아모
문제(실)를 풀고 있는 드림핵 캐릭터 아모

워게임 문제를 풀었는데도 뭔가 찜찜한 느낌이 드는 경우가 있죠? 플래그는 찾았지만 이게 왜 답이 됐는지, 다른 방식으로도 풀 수 있는지 잘 모르는 상태. 어떤 취약점이었는지는 기억나는데 왜 그 방향을 선택했는지, 처음에 어떤 가정을 세웠는지는 이미 기억에서 사라져 있는 경우가 많죠. 이때 어떻게 해결했는지 풀이를 작성하려 하면, 사실 안다고 생각했던 내용이 흐릿했다는 게 드러나는데요.

워게임, CTF 문제는 결과적으로 Flag를 얻으면 풀었다고 말할 수 있습니다. 맞는 페이로드를 찾았거나, 올바른 명령어를 실행했거나, 힌트를 참고해서 막힌 구간을 넘겼거나. 과정이 어떻든 플래그를 제출하면 풀린 거예요.

하지만 설명할 수 있는 건 다른 얘기예요. 왜 그 취약점이 발생했는지, 처음에 어떤 가정을 세웠는지, 다른 접근도 가능한데 이 방법을 고른 이유가 뭔지 풀이 과정을 정리하다 보면 내가 얼마나 이해했는지 좀 더 선명하게 알 수 있습니다.

Writeup을 쓰는 건 그 차이를 메우는 과정이에요. 막연하게만 알고 있던 것들이 내 말로 정리되면서, 풀면서는 인식하지 못했던 부분이나 더 나은 방법을 그 과정에서 발견하기도 합니다.

Writeup(라이트업)이란?

Writeup(라이트업)은 CTF 문제를 풀어가는 과정을 기록한 글이에요. 단순히 어떤 페이로드를 썼더니 플래그가 나왔다는 식의 솔루션 코드만이 아니라 문제를 어떻게 접근했는지, 어떤 생각을 거쳤는지, 어디서 막혔고 어떻게 극복했는지를 담은 기록이죠.

대부분의 CTF는 문제를 제대로 풀었는지 확인하기 위해 Writeup 제출을 요구하기도 해요. 대회가 끝난 뒤에 풀이자나 출제자가 자신의 풀이를 공개하면서 커뮤니티와 공유하는 문화도 있습니다. 그래서 공개되어 있는 Writeup이 꽤 있고, 이걸 읽으면서 공부하는 것도 권장되는 학습 방법 중 하나예요.

풀이는 직접 작성하는 것과 다른 사람이 작성한 풀이를 읽는 것 모두 학습에 도움이 되는데요. 문제를 해결하면서 그냥 넘어간 것들을 글로 쓰면서 내 말로 정리되고, 머릿속에 흐릿하게 남아 있던 지식을 다시 확인하면서 온전히 내가 이해하게 돼요.
읽을 때는 다른 사람의 사고 과정을 따라가며 같은 문제를 다른 접근으로 어떻게 해결했는지, 내가 선택하지 않은 경로를 다른 사람은 왜 선택했는지를 확인하며 시야가 넓어지기도 합니다.

Writeup을 잘 쓰는 방법

Writeup을 쓰기만 한다고 항상 좋은 Writeup이 되는 건 아니에요. 어떻게 쓰느냐에 따라 전혀 다른 글이 됩니다. CTF 커뮤니티에서 공유되었던 좋은 Writeup의 특징들을 보면, 공통적으로 사고 과정을 투명하게 담고 있다는 걸 알 수 있어요.

드림핵이 공개한 Writeup 가이드라인에는 분야별 권장 구성이 있습니다.

  • 포너블: 프로그램 분석 → 취약점 공격 시나리오 → 공격 코드 → 레퍼런스

  • 웹해킹: 웹 서비스 분석 → 취약점 → 공격 시나리오 → 공격 코드 → 레퍼런스

  • 리버싱: 필요한 기본 개념 설명 → 프로그램 분석 → (예시)역연산 시나리오 → 역연산 코드 → 레퍼런스

  • 암호학: 배경 설명 → 주어진 코드/프로그램 분석 → 풀이 방법 설명 →풀이 코드 작성 → 레퍼런스

분야마다 자연스러운 순서는 달라요. 특정 구조를 반드시 따를 필요는 없지만 추천하는 작성 방식입니다.
이 외에 어떤 작성 Tip이 있는지 소개할게요.

1. ‘왜’를 포함해 보세요.

가장 흔하게 보이는 Writeup 패턴은 무엇을 했는지만 쓰는 거예요. 어떤 명령어를 실행했는지, 어떤 코드를 작성했는지만 작성하면 단순한 기록에만 그칠 수 있어요. 왜 그렇게 선택했는지를 추가하면 글이 훨씬 풍부해집니다.

p=np 팀은 Writeup 작성 가이드에서 코드만 올리고 설명 없이 넘어가는 방식을 권장하지 않고 있어요. 출력 결과만 붙여 넣는 Writeup은 재현하는 방법을 알려줄 수 있어도 왜 이게 답이 되는지 잘 알려주지 못하거든요. 출제자가 설계한 사고의 흐름을 따라가는 경험을 읽는 사람들이 이해하기 어렵습니다.

생각을 거슬러 올라가 보는 것도 도움이 돼요. 처음에 어떤 취약점 유형을 의심했는지, 그 의심을 어떤 근거로 좁혀나갔는지, 최종 결론에 어떻게 도달했는지. 이 흐름을 담아두면 비슷한 문제를 다음에 만났을 때 참고할 수 있는 기록이 됩니다.

1-1. Writeup 예시 - pwnable

드림핵 CTF의 mmapped 문제 공식 풀이를 예시로 확인해 보면, 버퍼 오버플로우로 변수를 덮었다고만 말하지 않아요. buf가 32바이트인데 read()가 60바이트를 받는다는 코드를 먼저 보여주고, 어떤 스택 구조가 형성되는지, fake_flag_addr과 len 두 변수를 왜 동시에 덮어야 하는지를 순서대로 설명해요. 결론이 아니라 판단의 근거를 보여주는 것이죠.

드림핵 CTF의 mmapped 문제 공식 풀이 일부
드림핵 CTF의 mmapped 문제 공식 풀이 일부

코드 주석도 그 연장선이에요. 드림핵 Writeup 가이드라인에서는 익스플로잇 코드가 있을 경우, 코드만 올리더라도 각 줄이 어떤 기능을 하는지 설명하는 주석을 꼭 달도록 권고해요. mmapped의 # fake_flag_addr을 real_flag_addr로 변조 같은 주석이 좋은 예인데요. 코드는 무엇을 하는지 보여주지만, 주석은 왜 그렇게 했는지 설명해요. 코드를 읽는 사람이 흐름을 따라갈 수 있게 합니다.

2. 풀면서 기록하는 습관을 가져요.

문제를 다 풀고 나서 기억에 의존해 작성하려고 하면 정작 사고 과정의 핵심이 이미 희미해져 있는 경우가 많아요.

learnhacking.io는 Writeup 가이드에서 take notes and screenshots as you go를 권고해요. 어떤 오류가 나서 당황했는지, 왜 이 방향은 안 될 것 같다고 판단했는지 등 풀면서 가장 생생하게 남는 것들은 정답을 얻는 순간 기억에서 금방 희미해지거든요. 나중에 정리하면 실제로 거쳤던 고민들은 사라지기 쉬워요.

터미널 창을 띄워두고 노트 앱을 옆에 열고 막힐 때마다 그 순간을 짧게라도 적어두는 게 도움이 됩니다. 웹 카테고리를 예로 들면, 로그인 폼이 있으니 SQL injection이나 인증 우회를 먼저 확인해야겠다는 식의 짧은 기록도 나중에 참고하기 좋아요. 오류 메시지가 나왔거나 흥미로운 동작이 보인다면 스크린샷을 중간중간 찍어두는 것도 나중에 글 쓸 때 재료로 사용할 수 있죠.

3. 따라 할 수 있도록 작성해요.

읽는 사람이 같은 환경에서 따라 해볼 수 있을 정도로 구체적이면 Writeup이 훨씬 유용해져요.

사용한 도구와 버전을 명시하고, 코드나 페이로드는 직접 복사할 수 있는 형태로 작성하고, 환경 세팅이 필요하면 그 과정도 포함하는 식이에요. 어떻게 하니까 됐다는 설명 보다 “이 조건에서 이렇게 하면 이 결과가 나온다”처럼 구체적이면 풀이를 보는 사람이 실제로 적용해 볼 수 있거든요.

learnhacking.io도 재현 가능성을 Writeup의 핵심 중 하나로 강조하는데요, 재현할 수 없는 Writeup은 이런 방법이 있다고 알려줄 수는 있어도 적용하기가 어렵기 때문이에요.

풀이의 구조도 재현 가능성에 영향을 줍니다. 풀이를 읽는 사람이 문제를 이해하고 공격 방향을 잡고, 실제 코드를 보고 더 깊이 파고들 수 있는 순서로 작성하는 것이 좋아요. 반드시 정해진 순서가 있는 것은 아니지만, 읽는 사람이 보면서 어떤 흐름인지 이해할 수 있으면 더 좋습니다. 참고한 CVE, 관련 문서, 도움이 됐던 블로그 포스트 등 레퍼런스도 포함한다면 더 깊이 공부하고 싶은 사람들에게 도움이 되기도 해요.

4. 실패한 시도도 포함해 보세요.

막힌 부분, 틀린 가정, 시간을 낭비한 접근들을 굳이 남길 필요가 있을까 싶을 때가 있죠.

하지만 netguardia.com의 Writeup 가이드에서는 dead end를 포함한 Writeup이 독자에게 더 도움이 되는 경우가 많다고 해요. 실패한 시도가 없으면 Writeup은 결국 이게 답이었다는 것만 쓰이기 쉬운데, 실제 문제 풀이는 그렇지 않은 경우가 많죠? 여러 방향을 시도하고, 막히고, 다시 돌아오는 과정이니까요.

"처음에 A를 시도했는데 B라는 이유로 안 됐다. 그래서 C 방향으로 전환했다."
이런 흐름이 있으면 같은 실수를 피하거나 왜 그 방향은 작동하지 않는지 이해하는 데 도움이 돼요. 실패도 정보가 되는 것이죠.

드림핵 Writeup 가이드라인에서도 비슷한 이유로 겪을 수 있는 시행착오를 Writeup에 담도록 권장해요. 막혔던 순간이 오히려 다른 사람에게는 더 현실적인 참고가 된다는 것입니다. 매끄럽게 풀린 것처럼 보이는 풀이보다 어디서 막혔는지 담긴 풀이가 실전에 더 가까워요.

4-1. Writeup 예시 - crypto

드림핵 CTF의 Textbook-DSA 문제 공식 풀이 일부
드림핵 CTF의 Textbook-DSA 문제 공식 풀이 일부

드림핵 CTF의 Textbook-DSA Writeup은 한 발 더 나아가요. 출제자가 의도한 Nonce Reuse를 이용한 첫 번째 방법을 먼저 설명한 뒤, 여러 관점에서 문제를 고민할 수 있도록 이차 합동식을 구성하는 두 번째 방법을 함께 작성했어요.

풀이를 보는 사람이 많은 것을 배워갈 수 있도록 같은 목적지에 다른 경로가 있다는 걸 보여주면, 보는 사람은 그 문제 하나에서 훨씬 많은 걸 배울 수 있어요.

실력을 키우는 Writeup 읽는 방법

Writeup은 쓰는 것만큼 읽는 것도 실력을 키우는 데 도움이 돼요.
하지만 어떻게 읽느냐에 따라 얻을 수 있는 내용이 달라집니다.

Flag를 어떻게 얻을 수 있는지 방법만 찾고 끝내는 방식으로 읽으면, 같은 문제는 다시 풀 수 있을지 몰라도 비슷한 유형의 다른 문제에서는 막히는 경우가 생겨요.

풀이에서 A와 B 사이에서 선택했다면 '무엇이 결정적인 근거였는지', '내가 같은 상황이었다면 B를 선택했을 것 같은데 A가 더 나은 판단이었던 이유가 뭔지' 이런 질문을 품고 읽으면 판단하는 법 자체가 달라집니다.

내가 풀었던 문제의 다른 Writeup을 읽어보는 것도 도움이 돼요. 내가 선택하지 않은 방향을 다른 사람은 왜 선택했는지, 나보다 간결한 풀이가 있다면 어떤 관찰에서 그게 가능했는지 비교하면서 문제를 풀어나가는 시야를 넓혀줄 수 있어요.

단, 풀지 못한 문제의 Writeup은 너무 일찍 보지 않는 것을 추천해요. 워게임 문제를 처음 접했을 때 바로 풀이를 보는 것보다 적어도 한번은 직접 풀어 보는 것이 좋습니다. 아는 만큼 보인다는 말처럼 충분히 막혀보고 난 다음에 읽어야 어디서 다른 판단을 했는지를 알 수 있거든요.


CTF, 워게임 문제를 푸는 건 50% 학습했다고 볼 수 있어요.
기록하고 정리하는 것까지가 100% 학습입니다.

처음에는 좋은 Writeup을 작성하기 어려울 수도 있어요. 어색하게 설명이 끊기거나 빠뜨린 맥락이 있기도 하고, 왜 그 방향을 선택했는지 돌아보려고 해도 기억이 안 날 수도 있어요. Writeup을 쓰다가 내가 제대로 이해하지 못하고 풀었다는 걸 발견하는 순간이 있는데 그 순간이 성장할 수 있는 지점이기도 합니다.

풀이를 반드시 공개하지 않아도 노션이든 깃헙이든 로컬 파일이든, 언제든 읽을 수 있는 곳에 남겨두는 것만으로 충분해요. 쌓이다 보면 문제 풀이 사고방식의 패턴이 보이고, 반년 전 자신과 지금 자신이 어떻게 달라졌는지도 확인할 수 있습니다.

드림핵 워게임에는 직접 풀어볼 수 있는 문제들도 있고, 현직 해커가 작성한 드림핵 공식 풀이, 이미 문제를 해결한 다른 유저들의 풀이도 있어요. 지금 한 문제를 풀어 보고 풀이를 작성해 보세요. 아무것도 쓰지 않는 것보다 훨씬 많은 것을 배울 수 있습니다.

✨

이 게시글은 해킹 학습 플랫폼 드림핵 팀이 작성했습니다.

드림핵은 사이버 보안, 해킹을 공부할 수 있는 국내 최대 학습 플랫폼으로,
현재 8만 명이 드림핵에서 함께 해킹을 공부하고 있습니다.

더 다양한 해킹의 원리가 궁금하다면?
드림핵에서 확인해 보세요!

Share article
Contents
문제를 푸는 것과 설명할 수 있는 것의 차이Writeup(라이트업)이란?Writeup을 잘 쓰는 방법1. ‘왜’를 포함해 보세요.1-1. Writeup 예시 - pwnable2. 풀면서 기록하는 습관을 가져요.3. 따라 할 수 있도록 작성해요.4. 실패한 시도도 포함해 보세요.4-1. Writeup 예시 - crypto실력을 키우는 Writeup 읽는 방법

Theori © 2025 All rights reserved.

RSS·Powered by Inblog