Danh mục tài liệu

Nghệ thuật tận dụng lỗi phần mềm - Nguyễn Thành Nam

Số trang: 107      Loại file: pdf      Dung lượng: 1.38 MB      Lượt xem: 54      Lượt tải: 0    
Xem trước 10 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tài liệu Nghệ thuật tận dụng lỗi phần mền do Nguyễn Thành Nam biên soạn nhằm cung cấp cho người học các kiến thức về máy tính và biên dịch, tràn bộ đệm, chuỗi định dạng, một số loại lỗi khác,... Mời các bạn tham khảo tài liệu để nắm bắt nội dung chi tiết, với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.

 


Nội dung trích xuất từ tài liệu:
Nghệ thuật tận dụng lỗi phần mềm - Nguyễn Thành Nam Nghệ thuật tận dụng lỗi phần mềm Nguyễn Thành Nam Ngày 28 tháng 2 năm 2009 2 Mục lục 1 Giới thiệu 7 1.1 Cấu trúc tài liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Làm sao để sử dụng hiệu quả tài liệu này . . . . . . . . . . . . . 8 2 Máy tính và biên dịch 11 2.1 Hệ cơ số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 Chuyển đổi từ hệ cơ số bất kỳ sang hệ cơ số mười . . . . 12 2.1.2 Chuyển đổi qua lại giữa hệ nhị phân và hệ thập lục phân 12 2.1.3 Bảng mã ASCII . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Kiến trúc máy tính . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.1 Bộ vi xử lý (Central Processing Unit, CPU) . . . . . . . . 13 2.2.2 Thanh ghi . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2.3 Bộ nhớ và địa chỉ tuyến tính . . . . . . . . . . . . . . . . 17 2.2.3.1 Định địa chỉ ô nhớ . . . . . . . . . . . . . . . . . 17 2.2.3.2 Truy xuất bộ nhớ và tính kết thúc nhỏ . . . . . 17 2.2.4 Tập lệnh, mã máy, và hợp ngữ . . . . . . . . . . . . . . . 18 2.2.4.1 Các nhóm lệnh . . . . . . . . . . . . . . . . . . . 20 2.2.4.2 Cú pháp . . . . . . . . . . . . . . . . . . . . . . 20 2.2.4.3 Ngăn xếp . . . . . . . . . . . . . . . . . . . . . . 21 2.2.4.4 Các lệnh gọi hàm . . . . . . . . . . . . . . . . . 22 2.3 Trình biên dịch và cấu trúc một hàm . . . . . . . . . . . . . . . . 27 2.3.1 Dẫn nhập . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.3.2 Thân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.3.3 Kết thúc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3.4 Gọi hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3.5 Con trỏ vùng nhớ . . . . . . . . . . . . . . . . . . . . . . 30 2.4 Tóm tắt và ghi nhớ . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3 Tràn bộ đệm 35 3.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2 Thay đổi giá trị biến nội bộ . . . . . . . . . . . . . . . . . . . . . 37 3.3 Truyền dữ liệu vào chương trình . . . . . . . . . . . . . . . . . . 40 3.4 Thay đổi luồng thực thi . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.1 Kỹ thuật cũ . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.2 Luồng thực thi (control flow) . . . . . . . . . . . . . . . . 45 3.4.3 Tìm địa chỉ nhánh “bằng” . . . . . . . . . . . . . . . . . . 47 3.4.3.1 Với GDB . . . . . . . . . . . . . . . . . . . . . . 48 3.4.3.2 Với objdump . . . . . . . . . . . . . . . . . . . . 49 3 4 MỤC LỤC 3.4.4 Quay về chính thân hàm . . . . . . . . . . . . . . . . . . . 50 3.5 Quay về thư viện chuẩn . . . . . . . . . . . . . . . . . . . . . . . 52 3.5.1 Chèn dữ liệu vào vùng nhớ của chương trình . . . . . . . 52 3.5.1.1 Biến môi trường . . . . . . . . . . . . . . . . . . 53 3.5.1.2 Tên tập tin thực thi . . . . . . . . . . . . . . . . 55 3.5.1.3 Tham số dòng lệnh . . . . . . . . . . . . . . . . 55 3.5.1.4 Chính biến buf . . . . . . . . . . . . . . . . . . . 55 3.5.2 Quay về lệnh gọi hàm printf . . . . . . . . . . . . . . . . 55 3.5.3 Đi tìm chuỗi bị đánh cắp . . . . . . . . . . . . . . . . . . 57 3.5.4 Quay trở lại ví dụ . . . . . . . . . . . . . . . . . . . . . . 60 3.5.5 Gọi chương trình ngoài . . . . . . . . . . . . . . . . . . . 61 3.5.5.1 Với trường hợp tên chương trình là a . . . . . . 61 3.5.5.2 Với trường hợp tên chương trình là abc . . . . . 65 3.6 Quay về thư viện chuẩn nhiều lần . . . . . . . . . . . . . . . . . . 68 3.7 Tóm tắt và ghi nhớ . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4 Chuỗi định dạng 73 4.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2 Quét ngăn xếp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3 Gặp lại dữ liệu nhập . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4 Thay đổi biến cookie . . . . . . . . . . . . . . . . ...