CTF를 위한 공부 가이드

가이드라인

2019. 11. 24. 11:05

반응형

우선 필자는 고인물들의 영역에 끼지도 못하는 입문자입니다.

개인적인 경험을 바탕으로 적어놓은거라 그대로 따라 가지마시고 스스로 확장해나가시길 바랍니다.

필자의 초라한 대회 경력은 더보기 누르셔서 확인하시면 됩니다.

더보기

NEWSEC CTF 2019 19위

NCSC CTF 2019 8위

YISF 예선전 19위

YISF 본선 문제못푼 14명 중 1명

Layer7 CTF 38위

The Hacking Championship Junior 2019 예선 16위

SHADOW CTF 10위

Codegate CTF 2020 Preliminary Junior 18위

b01lers CTF 47위

 

우선 CTF는 개인전이든 팀전이든 거의 확정적으로 여러 분야가 한번에 나오게 됩니다.

따라서 대표적으로 나오는 분야들에 대한 기본적인 이해와 지식이 필요합니다.

가장 대표적인 분야가 WEB, Pwnable, REC, Misc입니다.

여기서 Misc는 이것저것 다 믹스해놓은거라 경험으로 해먹으셔야 합니다.

필자의 주분야는 REC라서 다른 분야는 잘 모른다는 점 참고부탁드립니다.

 

기본중에 기본!

C, Python, 리눅스는 필수적으로 공부하셔야 합니다.

프로그램을 직접 짜서 암호문을 풀어야 하는 문제는 정말 어느 대회를 가도 한문제 이상씩 꼭 나옵니다.

C는 코드를 읽고 이해할 수 있는 수준,

Python은 for문과 if문 활용이 정말 많이 필요하니 for와 if, 그리고 파일 입출력까진 꼭 자유자제로 활용할 수 있는 수준이 되셔야 합니다.

 

저는 프로그래밍을 아래 사이트에서 연습하였습니다.

https://codeup.kr/

https://www.acmicpc.net/

 

개인적으로 codeup이 더 쉬우니 codeup부터 차근차근 풀어나가시는걸 추천드립니다.

 

리눅스는 기본적인 명령어와 기본적인 디버거 사용법까지 숙지하시면 편합니다.

저는 FTZ로 공부했습니다.

 

이제 분야별로 공부를 해야겠지..?

가장 자주 나오는 WEB, PWN, REC 중 하나는 꼭 파셔야합니다.

저는 REC 충이라 REC 기준으로 말하겠습니다.

우선 대부분 CTF에서는 ELF 환경에서 돌아가는 프로그램을 자주 주기 때문에,

GDB, R2, peda 등 리눅스용 디버거 중 하나는 꼭 숙지하셔야 합니다.

개인적으로 입문자한테는 EDB 추천합니다. 올리랑 비슷해서 적응하기 쉬워요.

 

ELF 디버거는 책도 없어서 검색으로 공부했습니다.

IDA도 할줄알면 정말 좋습니다.

디컴파일러가 너무 사기라 얘도 필수입니다.

 

우선 윈도우 리버싱은 저의 경우

달고나 문서

리버싱 핵심원리(나뭇잎 책) 3장까지

리버스 엔지니어링 바이블(방독명 책) 2장까지

abex crackme 시리즈 올클

Lena 시리즈 8번까지

써니나타스 리버싱 올클

CodeEngn Basic 올클

립케알 4번까지

HackCTF 리버싱 올클

풀었는데 정말 앵간한 윈도우 문제는 앵간한게 풀 정도가 되었습니다.

이정도 이상만 하셔도 저보단 잘하는 사람이 되는겁니다.

 

그후 리눅스 환경에 적응하기 위해 FTZ를 올클한 후

리버스쿨 Level1 (인프런 인강)을 수강하였습니다.

Level 2 이후부터는 가격때문에 못들었는데 1까지만 들어도 정말 충분합니다.

그 후 r2 챌린지 올클하고 나니 elf 디버거도 나름 사용할 수 있게 되었습니다.

 

elf 디버거도 적응하였으니 바로 IDA를 공부하였습니다.

THE IDA PRO BOOK

요 책으로 했는데 진짜 이만한 책이 없습니다.

IDA 배운 후로는 ELF 디버거를 사용한적이 없네요..

 

저는 웹보단 그래도 시스템이 리버싱과 연관이 클 것 같아서 다음 분야로 시스템을 정했습니다.

N00bCTF pwnable 올클을 하고 pwnable.kr과 protostar를 옮겨가며 풀고 있습니다.

웹은.. 언젠가...

 

슬슬 CTF 경험을 쌓아보자!

CTF는 정말 경험없이는 힘든 곳이다. 이때까지 연습용 문제로 풀었던 문제들과 다른,

정말 신유형들을 만날 수 있다.

https://ctftime.org/

 

CTFtime.org / All about CTF (Capture The Flag)

 

ctftime.org

이곳에서 열리는 online ctf는 모두 참가해보며 경험을 늘려가자.

한문제도 못풀더라도 어떤식으로 진행하는지, 어떤 유형들이 나오는지,

내가 참가했던 대회의 롸업을 보는것도 정말 큰 도움이 된다.

 

필자는 리버싱 CodeEngn Basic을 풀 때 부터 온라인 대회를 모두 참가하였다.

당연히 한문제도 못풀고, 기껏 풀 수 있는건 대놓고 flag를 바이너리에 심어서 주는 문제와,

MIC CHECK 정도였다. 정말 우연히 찾은 CTF 연습 사이트가 큰 도움을 주었고,

덕분에 순위권까진 못갔지만 한자릿수에도 가보고, 본선도 가보며 여러 경험을 할 수 있었다.

 

CTF를 연습해보자!

CTF 연습 사이트는 국내에도 나름 있는 편이다.

HackCTF

https://ctf.j0n9hyun.xyz/

 

N00bCTF

http://52.79.224.215/

 

국외 사이트로는 

CTFLEARN V2

https://ctflearn.com/

 

picoctf

https://picoctf.com/

 

이정도가 내가 풀어본 곳이다.

HackCTF는 다른분야는 건들여 보지도 못하고 있다.

비교적 난이도가 쉬운 N00bCTF를 올클하면 도전해볼만 할 것 같다.

 

picoctf는 게임형식으로 진행되는데 영어를 못읽으면 조금 힘들다.

CTFLEARN은 난이도별로 문제가 있어서 차례차례 풀기 좋다.

 

마무리하며..

진짜 경험이 너무 중요하다...

경험 많은 사람들이 게싱으로 때려 맞추는거 보면 진짜 놀랍다..

최대한 많은 대회에 참가하고, 대회가 없을 땐 참가했던 대회 롸업도 보고,

CTF 연습사이트에서 연습도 하며 최대한 경험을 많이 쌓아보자.

그리고 신유형이 많이 등장하니 구글링도 능력껏 잘해줘야한다.

 

상 한번 못받아본 뉴비 글 읽어줘서 감사하고, 다들 열심히해서 본선장 같은 곳에서 봐요 :)

반응형