30 lines
2.2 KiB
Markdown

# 일반적인 바이너리 익스플로잇 보호 및 우회
{{#include ../../banners/hacktricks-training.md}}
## 코어 파일 활성화
**코어 파일**은 프로세스가 충돌할 때 운영 체제에 의해 생성되는 파일의 일종입니다. 이 파일은 프로세스 종료 시점의 메모리 이미지를 캡처하며, 프로세스의 메모리, 레지스터 및 프로그램 카운터 상태 등 여러 세부 정보를 포함합니다. 이 스냅샷은 디버깅 및 충돌 원인 이해에 매우 유용할 수 있습니다.
### **코어 덤프 생성 활성화**
기본적으로 많은 시스템은 디스크 공간을 절약하기 위해 코어 파일의 크기를 0으로 제한합니다(즉, 코어 파일을 생성하지 않음). 코어 파일 생성을 활성화하려면 **`ulimit`** 명령(배시 또는 유사한 셸에서) 또는 시스템 전체 설정을 구성할 수 있습니다.
- **ulimit 사용**: `ulimit -c unlimited` 명령은 현재 셸 세션이 무제한 크기의 코어 파일을 생성할 수 있도록 합니다. 이는 디버깅 세션에 유용하지만 재부팅이나 새로운 세션 간에 지속되지 않습니다.
```bash
ulimit -c unlimited
```
- **지속적인 구성**: 보다 영구적인 솔루션을 위해 `/etc/security/limits.conf` 파일을 편집하여 `* soft core unlimited`와 같은 줄을 추가할 수 있습니다. 이는 모든 사용자가 세션에서 수동으로 ulimit을 설정하지 않고도 무제한 크기의 코어 파일을 생성할 수 있도록 허용합니다.
```markdown
- soft core unlimited
```
### **GDB로 코어 파일 분석하기**
코어 파일을 분석하려면 GDB(GNU 디버거)와 같은 디버깅 도구를 사용할 수 있습니다. 코어 덤프를 생성한 실행 파일이 있고 코어 파일 이름이 `core_file`이라고 가정하면, 분석을 시작할 수 있습니다:
```bash
gdb /path/to/executable /path/to/core_file
```
이 명령은 실행 파일과 코어 파일을 GDB에 로드하여 충돌 시 프로그램의 상태를 검사할 수 있게 해줍니다. GDB 명령을 사용하여 스택을 탐색하고, 변수를 검사하며, 충돌의 원인을 이해할 수 있습니다.
{{#include ../../banners/hacktricks-training.md}}