본문 바로가기

3. Pwnable (포너블)/2) 개념 정리

[26.05.22] 아포 8주차 팀활동

https://inf.run/dJBhB

 

[지금 무료]해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문| juntheworld - 인프런 강의

현재 평점 4.8점 수강생 2,142명인 강의를 만나보세요. 해킹대회(CTF)의 시스템 해킹(Pwnable) 입문을 위한 강의입니다. 해킹대회(CTF) 출전, 시스템해킹(Pwnable) 기초, 해커를 위한 C언어와 컴퓨터 기초

www.inflearn.com

인프런 강의 섹션 4, 5, 6 수강 후 정리

 

 

VM(Virtual Machine)이란?

현재 사용하고 있는 컴퓨터의 OS에서 다른 OS를 실행시켜주는 프로그램

 

IOS 이미지 파일이란?

모든 OS는 설치하기 위해서는 비휘발성 메모리에 저장해둔 초기 부팅 프로그램이 필요한데,

이 비휘발성 메모리에 저장된 내용을 압축해둔 파일이 바로 ISO 이미지 파일

 

 

VM 설치 후 pwnable 문제 풀이를 위한 도구 설치 (아래 링크 참고)

https://posty.pe/3wtok2

 

Pwnable 문제를 풀기위한 CTF configuration 정리: HACK THE WOLRD

2026.1.6 peda 설치법 추가 CTF에 출전하여 Pwnable 문제를 풀기위해서 반드시 필요한 도구들이 있다. 모든 도구들의 세팅방법들을 차근차근 정리해보려고 한다. 0. Linux 환경 gdb 사용(문제풀이), nc 접속

www.postype.com

 

gdb

리룩스의 동적 디버거, 동적 디버거란 프로그램을 실행하며 컴퓨터의 레지스터, 메모리에 어떤 값들이 담기는 지 보여주는 프로그램

-> 프로그램이 어떻게 실행되는 지를 보여줌

 

pwngdb

시각적으로 더 예쁘고 다양한 정보들을 잘 정리해서 보여줌

 

pwntools

파이썬 라이브러리로, 공격코드 즉 익스플로잇 코드를 쉽게 작성할 수 있게 도와줌

 

 

 

hacktheworld 사이트를 통한 실습

http://hacktheworldctf.xyz

 

HackWorld

 

hacktheworldctf.xyz

 

 

 

플래그 파일

 

- 플래그란? 우리가 목표로 하고있는 값.

 

시스템 해킹을 통해 시스템을 장악했다는 것을 보여주려면,

쉘프로그램을 열고 쉘에서 내 명령어가 잘 작동하는 것을 증명하면 됨.

-> cat flag 라는 명령어를 통해 서버에 존재하는, 정상적인 루트로 확인할 수 없고 해킹을 통해서만 확인할 수 있는 플래그 파일을 읽었음을 보이면 된다.

 

 

 

 

타겟 바이너리

 

- 타겟 바이너리란? C, C++, Python 등으로 만들어진 실행 가능한 프로그램

리눅스에선 ELF파일, 윈도우에선 exe 파일로 불림

-> 워게임 사이트에 있는 접속정보(nc)를 이용해서 접속하게되면 타겟 바이너리에 접속하게 됨

 

 

소스코드

 

이 바이너리가 어떻게 동작하는지 알려주기 위해 주어진 것.

-> 주어진 소스코드를 분석하여 이 프로그램이 어떻게 동작하는지 알아내고 이 프로그램을 공격

 

 

 

 

 

 

 

Pwnable 문제풀이 과정

 

취약점 분석 -> 공격 시나리오 수립 -> 익스플로잇 코드 작성

 

 

 

 

1. 취약점 분석

주어진 공격타겟 바이너리의 취약점을 찾고 공격하는 것이 목표.

 

입력벡터, 어텍 벡터(Attack Vector): exploitation을 목적으로 입력 값을 삽입할 수 있는 부분

 

해당 프로그램에 취약점이 있더라도 공격자가 해당 취약점을 트리거할 수 없다면 아무런 공격도 수행 불가

-> 취약점 트리거 관점에서 어택벡터는 중요

 

 

2. 공격 시나리오 수립

취약점 분석이 끝났다면 공격기법을 선택.

만약 해당 바이너링 보호기법이 적용되어 있다면 우회하는 방법을 고민

 

보호기법 = mitigation

우회하는 것 = mitigation bypass

 

 

3. 익스플로잇 코드 작성

어떤 방법으로 작성해도 상관 없으나 주로 python의 pwntools라는 라이브러리를 많이 사용

 

 

취약점 분석

 

컴퓨터의 스택 메모리

 

스택 메모리란? 컴퓨터 메모리에 입력하는 공간.

예를 들어 C언어 프로그램을 짜고 어떤 함수 안에서 변수 또는 배열을 선언하게 되면 스택에 값이 들어감

 

- 지역(local)변수란? 스택안에 들어있는 값

 

Return address란?

callee가 실행될 때 스택에 있는 return adress는 callee의 실행이 끝나면 다시 돌아갈

caller 함수의 주소를 담고있음

 

 

 

EBP란? 이전 스택 프레임의 시작 주소

 

스택 프레임이란 특정한 함수의 실행 정보들을 묶은 것

스택 프레임

 

-> EBP는 스택 프레임을 나누는 역할, caller 함수가 사용하던 스택 프레임의 시작 주소만 callee 함수가 가지고 있다면,

callee 함수가 실행이 종료되면 손 쉽게 이전 스택 프레임으로 복귀할 수 있음