CTF/KNOWLEDGE
-
CTF 사이트 만드는 방법 / How to make CTF siteCTF/KNOWLEDGE 2021. 2. 12. 17:53
Background 제작 동기 CTF를 하다보면 PS와는 달리 수많은 저지 사이트가 존재하고, 각각에 등록된 문제 수도 적다는 점에 어려움을 겪을 때가 많다. 이는 과거의 문제들을 실제 대회와 같은 환경으로 구성해서 풀어보는 - 흔히 셋 돈다고 표현하는 - 연습 방법을 주로 사용해왔던 나로서는 불편한 일이었다. 그래서 원하는 문제를 등록해서 풀 수 있는 사설 사이트를 만들어보고자 했다. Tools 도구 CTFd CTFd/CTFd CTFs as you need them. Contribute to CTFd/CTFd development by creating an account on GitHub. github.com 구글 클라우드 플랫폼(GCP) Google Cloud Platform 하나의 계정으로 모든 G..
-
Memory Mitigation 메모리 보호기법CTF/KNOWLEDGE 2021. 1. 19. 02:28
PRELIMINARY 서론 시스템해킹을 공부하다 보면 다양한 공격 방법과 이를 방어하기 위한 보호 기법의 변천사에 대해 알 수 있다. 각각의 공격 방법이 성립하는 조건과 원리에 대해 이해하는 것은 매우 중요하며, 이를 알기 위해서는 보호 기법에 대한 이해 또한 필수적이다. pwnable을 하면서 만나게 되는 다양한 보호 기법들과 이에 대한 우회 방법에 대해 정리해보자. 보호 기법이 방지하는 공격 기법들은 붉은색, 우회 방법은 초록색으로 표기하였다. ASLR(Address Space Layout Randomization) ASLR 보호기법은 공유 라이브러리, 스택 및 힙이 매핑되는 메모리 영역의 주소를 임의로 배치한다. 그 이유는 공격자가 코드를 작성할 때 payload가 어느 위치에 삽입되야 하는지를 미..
-
Assembly Language 어셈블리어CTF/KNOWLEDGE 2021. 1. 14. 20:41
PRELIMINARY 서론 어셈블리어는 기계어와 일대일 대응되는 저수준 프로그래밍 언어이다. 고수준 언어로 작성된 소스 코드를 컴파일하면 어셈블리어로 변환되고, 어셈블러를 통해 이를 다시 기계어로 대응시키면 바이너리 파일이 만들어지게 된다. [1] 바이너리 파일이 주어졌을때, 원형이 되는 소스 코드가 무엇인지는 정확히 알 수는 없다. 그러나 시스템 해킹(pwnable)을 위해서는 프로그램이 어떻게 동작하는지 알아야 하고, 바이너리를 역으로 분석하여 작동 과정을 알아내는 리버스 코드 엔지니어링(reversing)이 필요하다. IDA나 Ghidra와 같은 디컴파일러를 통해 코드의 윤곽을 유추하는데 도움을 받을 수 있지만, 디스어셈블된 어셈블리 코드는 프로그램에 대해 많은 정보를 가지고 있으므로 어셈블리어에 ..