Tham khảo tài liệu 'kỹ thuật khai thác lỗi tràn bộ đệm', công nghệ thông tin, an ninh - bảo mật phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | KỸ THUẬT KHAI THÁC LỖI TRÀN BỘ ĐỆM Tóm tắt Loạt bài viết này trình bày về tràn bộ đệm buffer overflow xảy ra trên stack và kỹ thuật khai thác lỗi bảo mật phổ biến nhất này. Kỹ thuật khai thác lỗi tràn bộ đệm buffer overflow exploit được xem là một trong những kỹ thuật hacking kinh điển nhất. Bài viết được chia làm 2 phần Phần 1 Tổ chức bộ nhớ stack gọi hàm shellcode. Giới thiệu tổ chức bộ nhớ của một tiến trình process các thao tác trên bộ nhớ stack khi gọi hàm và kỹ thuật cơ bản để tạo shellcode - đoạn mã thực thi một giao tiếp dòng lệnh shell . Phần 2 Kỹ thuật khai thác lỗi tràn bộ đệm. Giới thiệu kỹ thuật tràn bộ đệm cơ bản tổ chức shellcode xác định địa chỉ trả về địa chỉ shellcode cách truyền shellcode cho chương trình bị lỗi. Các chi tiết kỹ thuật minh hoạ ở đây được thực hiện trên môi trường Linux x86 kernel tuy nhiên về mặt lý thuyết có thể áp dụng cho bất kỳ môi trường nào khác. Người đọc cần có kiến thức cơ bản về lập trình C hợp ngữ assembly trình biên dịch gcc và công cụ gỡ rối gdb GNU Debugger . Nếu bạn đã biết kỹ thuật khai thác lỗi tràn bộ đệm qua các tài liệu khác bài viết này cũng có thể giúp bạn củng cố lại kiến thức một cách chắc chắn hơn. Phân 1 Tổ chức bộ nhớ stack gọi hàm shellcode Mục lục Giới thiệu 1. Tổ chức bộ nhớ o Tổ chức bộ nhớ của một tiến trình process o Stack 2. Gọi hàm o Giới thiệu o Khởi đầu o Gọi hàm o Kết thúc 3. Shellcode o Viết shellcode trong ngôn ngữ C o Giải mã hợp ngữ các hàm o Định vị shellcode trên bộ nhớ o Vấn đề byte giá trị null o Tạo shellcode Giới thiệu Để tìm hiểu chi tiết về lỗi tràn bộ đệm cơ chế hoạt động và cách khai thác lỗi ta hãy bắt đầu bằng một ví dụ về chương trình bị tràn bộ đệm. int main int argc char argv char buf 16 if argc 1 strcpy buf argv 1 printf s n buf _ SkZ0@gamma bof gcc -o vuln -g SkZ0@gamma bof . vuln AAAAAAAA 8 ký tự A 1 AAAAAAAA SkZ0@gamma bof . vuln AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 24 ký tự A 2 .