본래 드림핵 내용을 기반으로 공부 과정을 기록했으나, 드림핵 운영원칙에 따라 문제 풀이 내용이 공개되는 부분들이 있어 모두 비공개로 전환했습니다.
https://dreamhack.io/lecture/courses/435
-
해킹은 컴퓨터 시스템에서 취약점을 찾는 것에서 시작한다.
- 취약점은 공격 가능한 영역(Attack Surface)의 의미를 갖는다. 제대로 방어하기 위해선 공격하는 방법도 알아야만 한다.
-
해킹의 대상은 매우 다양하지만, 크게 세 가지를 소개하고 있다.
- Web Hacking
System Hacking a.k.a. Pwnable
Reverse Engineering
-
해킹은 컴퓨터 시스템과 네트워크에 대한 깊은 이해와 프로그래밍 언어 및 운영 체제에 대한 지식을 필요로 한다.
- 정확히 수학과 같다. 수와 연산을 정의한 공리를 바탕으로 정리가 확립되고, 다양한 정리를 알고 있을수록 어떤 명제의 참거짓을 쉽게 증명할 수 있다.
-
Wargame은 의도적으로 취약점이 존재하도록 설계된 모의 해킹 환경이다. 아래와 같이 분야는 다양하지만, 드림핵은 웹 해킹, 리버스 엔지니어링, 시스템 해킹, 암호학을 주로 다룬다.
- 포너블(pwnable, system hacking)
웹(web)
리버스 엔지니어링(reversing)
암호학(crypto)포렌식(forensic)
네트워크(network)
커널(kernel)
브라우저(browser)
블록체인(blockchain)
기타(miscellaneous; misc)
등
-
풀이 과정을 기록해야 한다. (Write-up)
- 주어진 프로그램/서비스를 이해한다.
- 취약점을 파악한다.
- 취약점 공략/공격 방식을 구상한다.
- 풀이에 필요한 코드나 페이로드를 작성한다.