DINGA DINGA
article thumbnail
[Dream hack] Linux Exploitation & Mitigation Part 1 中 Return Address Overwrite & NOP Sled
SYSTEM/개념 정리 2021. 3. 4. 22:54

Return Address Overwrite 1. RET Overwrite - 1 - 리턴 주소를 덮어 실행 흐름을 조작해 공격자가 원하는 코드를 실행함. 2. RET Overwrite - 2 - example1.c에서는 argv[1]을 vuln함수의 인자로 전달함. - vuln함수에서는 src 버퍼를 buf 버퍼에 strcpy함수를 이용해 복사함. - strcpy 함수는 피복사 버퍼에 대한 길이 검증이 없기 때문에, 프로그램의 첫번째 인자에 buf 배열의 크기보다 긴 문자열을 넣으면 스택 버퍼 오버플로우가 발생함. - x86 아키텍처 호출 규약에 의해 vuln함수가 호출되면 vuln함수의 인자인 src 문자열 포인터가 스택에 먼저 쌓임 → vuln함수의 리턴 주소가 쌓임 → 함수의 프롤로그에서 ebp ..

article thumbnail
[Dream hack] Memory Corruption - C (I) 中 스택 버퍼 오버플로우
SYSTEM/개념 정리 2021. 3. 4. 21:10

1. 버퍼 오버플로우란? - 버퍼: 지정된 크기의 메모리 공간 - 버퍼 오버플로우: 버퍼가 허용할 수 있는 양의 데이터보다 더 많은 값이 저장되어 버퍼가 넘치는 취약점 - 발생하는 위치에 따라 스택 버퍼 오버플로우, 힙 오버플로우로 나뉨 - 스택 버퍼 오버플로우: 지역 변수가 할당되는 스택 메모리에서 오버플로우가 발생하는 경우 - 버퍼 A가 8바이트, 버퍼 B가 8바이트일 때 16바이트의 데이터가 버퍼 A에 복사되면 이 데이터의 뒷부분은 B에 쓰여짐 (버퍼 오버플로우). 이는 프로그램의 Undefined Behavior를 이끌어냄. - 만약 데이터 영역 B에 나중에 호출될 함수 포인터를 저장하고 있다면 이 값을 "AAAAAAAA"와 같은 데이터로 덮었을 때 Segmentation Fault를 발생시킴. ..

BOF 정리 (2)
SYSTEM/개념 정리 2021. 2. 24. 19:52

5. Buffer overflow의 이해 버퍼(buffer) - 시스템이 연산 작업을 하는데 있어 필요한 데이터를 일시적으로 저장하는 메모리 상의 저장 공간 - 대부분의 프로그램에서는 버퍼를 스택에 생성함. - 스택은 함수 내에서 선언한 지역 변수가 저장되고 함수가 끝나면 반환됨. buffer overflow - 미리 준비된 버퍼에 버퍼의 크기보다 큰 데이터를 쓸 때 발생함. - 공격자가 메모리 상의 임의의 위치에다 원하는 코드를 저장시켜 놓고 return address가 저장되어 있는 지점에 그 코드의 주소를 집어 넣음으로써 EIP에 공격자의 코드가 있는 곳의 주소가 들어가게 해 공격을 하는 방법. void function(int a, int b, int c){ char buffer1[15]; char..

BOF 정리 (1)
SYSTEM/개념 정리 2021. 2. 21. 19:45

2. 8086 Memory Architecture - 시스템이 초기화 되기 시작하면 시스템은 커널을 메모에 적재시키고 가용 메모리를 확인함. - 시스템은 운영에 필요한 기본적인 명령어 집합을 커널에서 찾으므로 커널 영역은 반드시 해당 위치에 있어야 함. - 기본적으로 커널은 64KB 영역에 있지만 오늘날의 운영체제는 이를 확장하여 더 큰 영역을 사용함. - 32bit 시스템에서 메모리 영역에 주소를 할당할 수 있는 범위: 0 ~ 2^32-1 - 64bit 시스템에서 메모리 영역에 주소를 할당할 수 있는 범위: 0 ~ 2^64-1 - 오늘날 시스템은 멀티태스킹이 가능하므로 메모리에는 여러 개의 프로세스가 저장되어 병렬적으로 작업을 수행. - 가용한 메모리 영역에는 여러 개의 segment(하나의 프로세스를..

728x90