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.