본문 바로가기

Pwnable8

Heap Exploitation Use After Free​UAF (Use After Free)메모리 해제 후, 초기화되지 않은 free chunk를 재사용할 때 생기는 취약점​Dangling Pointer할당이 해제되어 유효하지 않은 메모리를 가리키는 포인터​​공격 기법 실습바이너리 파일 정보 수집2. 바이너리 파일 실행3. 정적 분석4. 공격 시나리오5. ExploitDouble Free Bug​DFB (Double Free Bug)이미 해제된 chunk인 free chunk를 다시 해제할 수 있을 때 발생하는 버그​glibc 버전 별 DFB 검증glibc 버전 별로 DFB를 검증하는 방식에 있어 차이가 존재DFB 활용 시, glibc 버전을 먼저 확인하고 공격 시나리오를 작성하는 것이 중요​_int_free()chunk가 해제되었.. 2025. 11. 19.
Heap Basic Heap​Stack vs HeapHeap은 운영체제가 아닌 프로그래머에 의해서 메모리 공간을 동적으로 할당하고 해제​Dynamic Memory Allocation 관련 함수운영체제가 아닌 프로그래머에 의해서 메모리 공간을 동적으로 할당하고 해제할 때 호출 *int*malloc() : 동적 메모리 할당 시, 메모리 블록을 할당하고 추적해 메모리를 효율적으로 관리_int_free() : 동적으로 할당된 메모리 블록을 해제하고 재활용 가능한 리스트에 추가 및 관리​Heap 영역메모리에서의 힙 영역은 낮은 주소에서 높은 주소의 방향으로 할당프로그램 실행 중, 동적으로 메모리를 할당/해제해 사용하는 공간이며, pointer로 데이터에 접근​Memory Allocator시스템에게 동적 메모리 할당을 요구할 때 작업.. 2025. 11. 19.
Integer Overflow Integer​Integer 자료형보통 OS의 기본 연산 단위를 사용 (16bit : 2byte, 2bit/64bit : 4byte)signed int 범위 : -2 31승 ~ +2 31승 -1unsigned int 범위 : 0 ~ +2 32승 -1 (=4,294,967,295)Integer Overflow​Integer Overflow 관련 CVE​CVE-2022-36934전 세계적으로 인기 있는 모바일 메신저 WhatsApp에서 발견된 취약점Integer Overflow로 인해, 화상 통화에서 원격 코드 실행(RCE)을 유발할 수 있다고 발표공격자가 화상 통화 중에 사용자 상호 작용 없이 특수하게 조작된 임의 코드 실행이 가능​Integet Overflow정수형 자료형의 정해진 범위보다 크거나 작은 .. 2025. 11. 19.
Format String Bug Format String​Format : 서식 또는 형식Format FunctionFormat String을 사용해 데이터를 원하는 형식으로 다루는 것이 가능한 함수​Format String어떠한 형식이나 형태를 지정해 주는 문자열Format Function의 인자에 해당하며 텍스트나 Format Tag를 포함ex. char str[20] = “LMS Pwnable”;printf(”Hello %s World!”. str);​Format Tag%로 시작하며 출력할 값에 [옵션]들을 선택 적용해 출력 형태 설정필수적인 최소한의 형태는 ‘%서식 지정자’​% [파라미터$] [플래그] [넓이] [.정밀도] [길이] 서식 지정자파라미터 : 참조할 인자의 인덱스를 지정 (구분자 : $)플래그 : 출력할 인자의 정렬 .. 2025. 11. 19.
Buffer Overflow Stack Buffer Overflow​Stack 영역함수의 호출에 필요한 지역 변수와 매개 변수 등이 저장되는 영역데이터의 교환이 Top에서만 이루어지며, 높은 주소에서 낮은 주소의 방향으로 메모리 영역 차지 (선입선출)​Stack Frame스택 영역에 저장되는 함수의 호출 정보로 함수마다 스택 영역을 구분하기 위해 생성되는 공간RSP(Stack Pointer)가 아닌 RBP(Base Pointer)로 로컬 변수, 파라미터, 복귀 주소에 접근​Stack Buffer Overflow스택 할당 개체의 범위를 벗어난 버퍼 접근으로 발생하는 오류할당된 입력 크기보다 큰 입력 값으로 RET의 주소 영역을 침범해 악성코드로 덮는 공격 가능​Stack Buffer Overflow 취약 코드 예시​※ 취약 함수sca.. 2025. 11. 19.
Pwnable Tools gcc 컴파일​GCC (GNU Compiler Collection)GNU 프로젝트의 일환으로 개발된 컴파일러C, C++, Java, Objective-C, Fortran, Ada, Pascal 등 언어 지원​기본 컴파일 방법gcc 명령어 입력 시, 해당 파일을 컴파일​메모리 보호 기법 설정 옵션gcc 명령어를 사용해 컴파일 메모리 보호 기법 설정하거나 해제할 수 있는 옵션이 존재 NX 해제 : gcc -z execstackSSP 해제 : gcc -fno-stack-protectorPIE 해제 : gcc -no-pieRELRO 해제 : gcc -z norelro​gcc 컴파일gcc를 사용해 C로 작성한 소스코드를 실행 가능한 바이너리 파일로 생성하는 과정디버깅 Tool​Linux​GDB (GNU Debu.. 2025. 11. 19.