Share
## https://sploitus.com/exploit?id=6DE1E6B4-C2D5-572E-9A76-DC468B9A11F2
# Crackme - Binary Exploitation Challenge
## Projektbeschreibung
Dieses Crackme ist ein Linux 64-Bit Executable (X86_64), das mehrere Sicherheitslücken kombiniert. Ziel ist es, durch Reverse Engineering und Exploitation das FLAG zu erhalten.
---
## Dateien
- **crackme.c** - Kommentierter Quellcode
- **crackme** - Kompiliertes 64-Bit Linux Executable
- **Makefile** - Build-Konfiguration
- **flag** - Datei mit dem FLAG
- **exploit.py** - Exploit-Script (Musterlösung)
- **SOLUTION.md** - Detaillierte Musterlösung
- **README.md** - Diese Datei
---
## Kompilierung
### Standard Build
```bash
make
```
### Clean Build
```bash
make clean
make
```
### Manuelle Kompilierung
```bash
gcc -Wall -fno-stack-protector crackme.c -o crackme
```
### Mit Stack Protection (Härerer Schwierigkeitsgrad)
```bash
gcc -Wall -fstack-protector-all crackme.c -o crackme
```
**Hinweis:** Das Programm kompiliert ohne Warnings dank der `#pragma` Direktiven im Code.
---
## Ausführung
### Normal
```bash
./crackme
```
### Mit Exploit
```bash
python3 exploit.py | ./crackme
```
### Als Netzwerkdienst (für Remote-Testing)
```bash
mkfifo /tmp/2way
nc -l 3090 0/tmp/2way &
rm -f /tmp/2way
# Verbinden:
nc localhost 3090
# Aufräumen:
killall -9 crackme nc
rm -f /tmp/2way
```
---
## Schwachstellen
Das Crackme enthält **3 kombinierte Vulnerabilities**:
1. **Format String Vulnerability** - Information Disclosure
2. **Type Confusion** - Union-basierte Logik-Bypass
3. **Buffer Overflow** - Memory Corruption
Details siehe [SOLUTION.md](SOLUTION.md)
---
## Schwierigkeitsgrad
**Medium**
### Erforderliche Kenntnisse:
- C Programmierung
- x86-64 Assembly (Grundlagen)
- Buffer Overflow Exploitation
- Little Endian Byte Order
- Struct Memory Layout
- Python für Binary Exploitation
### Lösungsansätze:
- Statische Analyse (objdump, strings, ghidra, IDA)
- Dynamische Analyse (gdb, strace)
- Source Code Review (falls verfügbar)
---
## Tools
### Analyse
```bash
# Disassembly
objdump -d crackme | less
# Strings extrahieren
strings crackme
# File info
file crackme
checksec crackme # falls vorhanden
```
### Debugging
```bash
gdb ./crackme
```
### Exploit Development
```bash
python3 exploit.py
```
---
## Compiler Optionen
### Aktive Schutzmaßnahmen
- `-Wall` - Alle Warnings aktiviert
- Pragma-Direktiven unterdrücken absichtliche Vulnerabilities
### Deaktivierte Schutzmaßnahmen
- `-fno-stack-protector` - Stack Canary deaktiviert
- Kein PIE (Position Independent Executable)
- Kein RELRO
Diese Einstellungen erleichtern die Exploitation für Lernzwecke.
---
## FLAG Format
```
FLAG{typ3_c0nfus10n_1s_fun}
```
Das FLAG wird nur ausgegeben, wenn alle Schwachstellen korrekt ausgenutzt werden.
---
## Entwicklung
### Plattform
- **Entwickelt auf:** macOS ARM64 (M-series)
- **Kompiliert für:** Linux x86-64
- **Compiliert mit:** Docker + GCC
### Docker Build Command
```bash
docker run --rm --platform linux/amd64 -v $(pwd):/work -w /work gcc:latest make
```
---
## Hinweise für Reverse Engineers
1. Das Programm nutzt `stdin`/`stdout` für Input/Output
2. Ein Timeout von 60 Sekunden ist aktiv (für Remote-Betrieb)
3. Das FLAG wird aus der Datei `flag` gelesen mit `system("cat flag")`
4. Der Code verwendet absichtlich unsichere Funktionen
5. Struct-Layout ist stabil gegen Neukompilierung
---
## Abgabe
### Enthaltene Dateien:
- ✅ Kommentierter Quellcode (`crackme.c`)
- ✅ Makefile mit `all`, `crackme`, `clean` Targets
- ✅ FLAG-Datei (`flag`)
- ✅ Kompiliertes Executable (`crackme`)
- ✅ Musterlösung - Textbeschreibung (`SOLUTION.md`)
- ✅ Musterlösung - Exploit Script (`exploit.py`)
---
## Lizenz
Erstellt für Bildungszwecke im Rahmen einer Binary Exploitation Vorlesung.
**Warnung:** Dieses Programm enthält absichtliche Sicherheitslücken und sollte nur in kontrollierten Umgebungen ausgeführt werden!
---
## Support
Bei Fragen zum Crackme siehe `SOLUTION.md` für die vollständige Musterlösung.