Tìm hiểu đầy đủ về tràn bộ đệm

Thảo luận trong 'Quản Trị Mạng' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    172
    Điểm thành tích:
    0
    Xu:
    0Xu
    Lời mở đầu

    Tràn bộ đệm là một trong những lỗ hỏng bảo mật lớn nhất hiện nay. Vậy tràn bộ đệm là gì? Làm thế nào để thi hành các mã lệnh nguy hiểm qua tràn bộ đệm .?

    ***Lưu ý*** một ít kiến thức về Assembly, C, GDB và Linux là điều cần thiết đối với bạn!


    Sơ đồ tổ chức bộ nhớ của một chương trình

    /------------------ địa chỉ vùng nhớ cao

    | |

    | Stack |

    | |

    |------------------|

    | (Initialized) |

    | Data |

    | (Uninitialized) |

    |------------------|

    | |

    | Text |

    | |

    ------------------/ địa chỉ vùng nhớ thấp


    Stack và Heap?

    Heap là vùng nhớ dùng để cấp phát cho các biến tỉnh hoặc các vùng nhớ được cấp phát bằng hàm malloc()

    Stack là vùng nhớ dùng để lưu các tham số và các biến cục bộ của hàm.

    Các biến trên heap được cấp phát từ vùng nhớ thấp đến vùng nhớ cao. Trên stack thì hoàn toàn ngược lại, các biến được cấp phát từ vùng nhớ cao đến vùng nhớ thấp.

    Stack hoạt động theo nguyên tắc vào sau ra trước(Last In First Out - LIFO). Các giá trị được đẩy vào stack sau cùng sẽ được lấy ra khỏi stack trước tiên.


    PUSH và POP

    Stack đổ từ trên xuống duới(từ vùng nhớ cao đến vùng nhớ thấp). Thanh ghi ESP luôn trỏ đến đỉnh của stack(vùng nhớ có địa chỉ thấp).

    .
     

    Các file đính kèm:

Đang tải...