시스템 해킹 (Pwnable) 이해하기
- 해킹이란?
- 권한이 없는 행위를 하는 것
- 시스템 장악 (shell 실행)
- 시스템: os를 기반으로 하드웨어를 통제할 수 있는 소프트웨어적 환경
- 쉘: 실행하고 싶은 프로그램을 실행시켜주는 프로그램 (cmd, bash, Zsh)
- 쉘 실행 => 시스템 해킹, pwnable의 목표
- 시스템 장악: 외부에 포트가 열린 프로그램에 접근하여 쉘을 실행시킨다는 것이다
- 목표: 권한없이 넘어가서 하고 싶은 거 하기
- 구체화: 프로그램의 취약점을 찾아 공격해 쉘을 실행하는 것이 pwnable의 목표
Pwnable의 문제상황 이해하기
- 인터넷 어딘가에 위차한 외부, remote 환경에서 내부 환경으로 침투하여 들어가는 것아 ctf pwnable에서 출제되는 문제 상황

Pwnable 문제 예시
- hacktheworld.xyz의 pwn 카테고리 문제 확인

- 시스템 해킹 문제를 푸는데 원격 접속(nc, netcat)이 왜 필요한가?
nc hacktheworld_cca.xyz 3000
- 도메인 이름: 인터넷에 연결된 컴퓨터의 이름
- 포트: 실행중인 프로그램에 접근하기 위한 번호
- nc (도메인) (포트)로 접속 정보를 나타냄 e.g. nc 101.79.9.58 10001
악의적인 실행흐름 만드는 법
- 컴퓨터 구조 이해하기
- CPU와 CPU 속의 레지스터, 거기 pc를 저장하고, memory가 존재하는 구조
- 프로그램 실행과정
- CPU는 PC에 쓰인 주소에 있는 프로그램 코드를 가져와서 검증없이 실행 => 이용해보자
- 악의적인 실행과정 만들기
- 0xFFFFF라는 임의의 주소에 password가 뭔지 알아내는 코드 삽입하고 pc 값을 0xFFFFF로 바꿔주기

사진 출처: 해킹대회 (CTF) 출전을 위한 시스템킹(Pwnable) 입문 - juntheworld [인프런]