Chào mừng đến với PeginWN! Repository này dành cho những người mới bắt đầu hành trình khám phá thế giới khai thác binary. Tại đây, bạn sẽ tìm thấy tài nguyên, ví dụ và bài tập để giúp hiểu những kiến thức cơ bản về pwn và khai thác binary.
Repository này nhằm cung cấp một con đường có cấu trúc cho người mới bắt đầu với khai thác binary. Nó bao gồm các khái niệm cơ bản, lỗ hổng phổ biến và cung cấp các ví dụ thực tế để kiểm tra kỹ năng của bạn.
Để bắt đầu với khai thác binary, bạn sẽ cần thiết lập môi trường với các công cụ cần thiết. Đây là danh sách cơ bản các công cụ bạn có thể thấy hữu ích:
- GDB: GNU Project Debugger
- pwntools: Framework CTF và thư viện phát triển exploit
- Binary Ninja / IDA Pro / Ghidra: Công cụ phân tích binary
- gef, pwndbg, hoặc peda: Plugin GDB để nâng cao output debug
Bạn có thể cài đặt pwntools với pip:
pip install pwntools
Tôi đã viết script để tự động cài đặt môi trường và các công cụ cần thiết để bắt đầu. Bạn có thể chạy lệnh bên dưới để cài đặt (Trên Linux):
git clone https://github.com/d4kw1n/PeginWN.git
cd PeginWN/Setup
chmod +x setup.sh
./setup.shPhần này cung cấp liên kết đến hướng dẫn, sách và trang web nơi bạn có thể tìm hiểu thêm về khai thác binary:
- LiveOverflow Binary Exploitation Playlist
- "Hacking: The Art of Exploitation" của Jon Erickson
- pwn.college
- Root-me:App-System
- pwnable.kr
- pwnable.tw
Đây là danh sách các lỗ hổng phổ biến mà bạn sẽ học trong repository này:
| Loại lỗ hổng | Mô tả | Liên kết |
|---|---|---|
| Buffer Overflow (Tràn bộ đệm) | Xảy ra khi dữ liệu vượt quá ranh giới của buffer và ghi đè lên bộ nhớ liền kề. | Liên kết |
| Format String (Chuỗi định dạng) | Khai thác liên quan đến việc sử dụng sai các hàm chuỗi định dạng như printf. |
Liên kết |
| Integer Overflow (Tràn số nguyên) | Xảy ra khi một phép toán số học cố gắng tạo ra một giá trị số nằm ngoài phạm vi có thể biểu diễn với số chữ số cho trước. | Liên kết |
| Use After Free (Sử dụng sau khi giải phóng) | Truy cập bộ nhớ sau khi nó đã được giải phóng, có thể dẫn đến thực thi mã tùy ý. | Liên kết |
| Heap Overflow (Tràn heap) | Tương tự buffer overflow nhưng xảy ra trong bộ nhớ heap, cho phép kẻ tấn công ghi đè lên các cấu trúc dữ liệu quan trọng. | Liên kết |
| Double Free (Giải phóng kép) | Chương trình giải phóng cùng một vị trí bộ nhớ hai lần, có thể dẫn đến hỏng bộ nhớ và thực thi mã tùy ý. | Liên kết |
| Return Oriented Programming (ROP) | Kỹ thuật cho phép kẻ tấn công thực thi mã bằng cách nối chuỗi các chuỗi lệnh nhỏ đã có sẵn trong binary. | Liên kết |
| Stack Canary Bypass (Bypass Stack Canary) | Kỹ thuật được sử dụng để vượt qua stack canaries, được sử dụng để phát hiện buffer overflow trên stack. | Liên kết |
| Arbitrary Write (Ghi tùy ý) | Cho phép kẻ tấn công ghi dữ liệu vào một vị trí tùy ý trong bộ nhớ, có thể được khai thác để sửa đổi hành vi chương trình hoặc thực thi mã. | Liên kết |
| Type Confusion (Nhầm lẫn kiểu) | Xảy ra khi chương trình nhầm lẫn coi một phần dữ liệu là kiểu khác, dẫn đến hành vi không mong muốn hoặc lỗ hổng. | Liên kết |
| Uninitialized Memory Read (Đọc bộ nhớ chưa khởi tạo) | Đọc từ bộ nhớ chưa được khởi tạo, có thể rò rỉ thông tin nhạy cảm hoặc gây ra hành vi không xác định. | Liên kết |
| Null Byte Injection (Tiêm byte null) | Chèn các byte null (\x00) vào input để thao tác các hàm xử lý chuỗi và có thể vượt qua các kiểm tra bảo mật. |
Liên kết |
| Memory Leak (Rò rỉ bộ nhớ) | Xảy ra khi chương trình không giải phóng bộ nhớ không còn cần thiết, có thể dẫn đến cạn kiệt tài nguyên và các vấn đề khác. | Liên kết |
| Race Conditions (Điều kiện đua) | Khai thác thời gian của các hành động trong môi trường đồng thời để gây ra hành vi không mong muốn hoặc có được quyền truy cập trái phép. | Liên kết |
| Stack Smashing (Đập vỡ stack) | Một loại buffer overflow cụ thể nhắm vào stack, có thể cho phép kẻ tấn công ghi đè return address và thực thi mã tùy ý. | Liên kết |
| Command Injection (Tiêm lệnh) | Mặc dù phổ biến hơn trong ứng dụng web, command injection cũng có thể xảy ra trong ứng dụng binary nếu input người dùng được xử lý không đúng và truyền đến lệnh hệ thống. | Liên kết |
| Shellcode (Mã shell) | Mã máy được thiết kế để thực thi shell hoặc các chức năng hệ thống khác. | Liên kết |
Chúng tôi cung cấp một bộ bài tập để thực hành kỹ năng của bạn. Mỗi bài tập đi kèm với một challenge binary và một bài viết giải pháp.
Đóng góp rất được chào đón! Nếu bạn có bất kỳ bài tập, tài nguyên hoặc cải tiến nào, vui lòng fork repository và submit pull request.
Chúng tôi đánh giá cao mọi đóng góp giúp làm cho đây trở thành một tài nguyên có giá trị cho tất cả mọi người bắt đầu với khai thác binary.