## https://sploitus.com/exploit?id=05CF21D0-8E19-5900-B700-A733F9C6DDA7
# Exploit Script - Level 3
- **Kỹ thuật:** Buffer Overflow (Tràn bộ đệm) & Ghi đè Function Pointer.
- **Mục tiêu:** Ép hệ thống chép tràn 76 bytes rác để chạm đến vị trí con trỏ hàm, sau đó đè 4 byte cuối cùng thành địa chỉ của hàm `good()`.
**Quá trình dò tìm Offset bằng Phân tích Assembly:**
Khác với phương pháp thử sai (fuzzing) bằng chuỗi Pattern, nhóm đã sử dụng GDB để phân tích trực tiếp mã máy (Assembly) của chương trình. Bằng lệnh `disas main`, nhóm tìm ra tọa độ trên bộ nhớ Stack của hai biến quan trọng:
1. Mảng `buffer` nằm ở vị trí `ebp - 0x58` (hay -88).
2. Biến con trỏ hàm `functionpointer` nằm ở `ebp - 0xc` (hay -12).
Phép toán bù trừ khoảng cách: 88 - 12 = 76 bytes.
Như vậy, nhóm xác định chính xác cần 76 bytes đệm (Padding) rác để lấp đầy khoảng trống và đè tới con trỏ.
**Usage:**
Script `exploit.sh` tự động gọi file Binary `level03` kết hợp với Command Substitution `$()` của Bash. Bên trong script, Python in ra 76 bytes rác, cộng với địa chỉ hàm `good()` được viết dưới chuẩn Little-Endian (`\x74\x84\x04\x08`) để leo thang đặc quyền.