Pwnable8 Heap Exploitation Use After FreeUAF (Use After Free)메모리 해제 후, 초기화되지 않은 free chunk를 재사용할 때 생기는 취약점Dangling Pointer할당이 해제되어 유효하지 않은 메모리를 가리키는 포인터공격 기법 실습바이너리 파일 정보 수집2. 바이너리 파일 실행3. 정적 분석4. 공격 시나리오5. ExploitDouble Free BugDFB (Double Free Bug)이미 해제된 chunk인 free chunk를 다시 해제할 수 있을 때 발생하는 버그glibc 버전 별 DFB 검증glibc 버전 별로 DFB를 검증하는 방식에 있어 차이가 존재DFB 활용 시, glibc 버전을 먼저 확인하고 공격 시나리오를 작성하는 것이 중요_int_free()chunk가 해제되었.. 2025. 11. 19. Heap Basic HeapStack vs HeapHeap은 운영체제가 아닌 프로그래머에 의해서 메모리 공간을 동적으로 할당하고 해제Dynamic Memory Allocation 관련 함수운영체제가 아닌 프로그래머에 의해서 메모리 공간을 동적으로 할당하고 해제할 때 호출 *int*malloc() : 동적 메모리 할당 시, 메모리 블록을 할당하고 추적해 메모리를 효율적으로 관리_int_free() : 동적으로 할당된 메모리 블록을 해제하고 재활용 가능한 리스트에 추가 및 관리Heap 영역메모리에서의 힙 영역은 낮은 주소에서 높은 주소의 방향으로 할당프로그램 실행 중, 동적으로 메모리를 할당/해제해 사용하는 공간이며, pointer로 데이터에 접근Memory Allocator시스템에게 동적 메모리 할당을 요구할 때 작업.. 2025. 11. 19. Integer Overflow IntegerInteger 자료형보통 OS의 기본 연산 단위를 사용 (16bit : 2byte, 2bit/64bit : 4byte)signed int 범위 : -2 31승 ~ +2 31승 -1unsigned int 범위 : 0 ~ +2 32승 -1 (=4,294,967,295)Integer OverflowInteger Overflow 관련 CVECVE-2022-36934전 세계적으로 인기 있는 모바일 메신저 WhatsApp에서 발견된 취약점Integer Overflow로 인해, 화상 통화에서 원격 코드 실행(RCE)을 유발할 수 있다고 발표공격자가 화상 통화 중에 사용자 상호 작용 없이 특수하게 조작된 임의 코드 실행이 가능Integet Overflow정수형 자료형의 정해진 범위보다 크거나 작은 .. 2025. 11. 19. Format String Bug Format StringFormat : 서식 또는 형식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 OverflowStack 영역함수의 호출에 필요한 지역 변수와 매개 변수 등이 저장되는 영역데이터의 교환이 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 norelrogcc 컴파일gcc를 사용해 C로 작성한 소스코드를 실행 가능한 바이너리 파일로 생성하는 과정디버깅 ToolLinuxGDB (GNU Debu.. 2025. 11. 19. 이전 1 2 다음