Embed presentation
Download as PDF, PPTX


















This document discusses heap overflows and exploit development. It explains that the heap is an area of memory used for dynamic allocation via malloc() and freed via free(). When free() is called, it must write to forward and backward pointers, allowing overflow data to potentially control those writes. This makes it possible to write to arbitrary RAM locations, such as the stack return address, global offset table, destructors table, or function pointers, in order to execute code and crash or exploit the program.

















Overview of CNIT 127 course and chapter focused on heap overflow exploitation.
Explanation of what a heap is in the context of memory management.
Description of memory usage in programs, including stacks, heaps, malloc(), and free().
Highlighting the differences between heap and stack memory management.
Breakdown of heap structure including chunk size, pointers, and data organization.
Introduction to a simple project example illustrating heap exploitation.
Continuation of the example, detailing steps and expectations for the project.
Instructions on how to view the heap memory using the gdb debugger.
Discussion on how heap memory can lead to program crashes and potential exploit scenarios.
Utilizing gdb to analyze application crashes related to heap overflows.
Concentration on specific targets within heap memory to carry out exploits.
Challenges and problems associated with heap memory management.
Explains difficulty in controlling EIP values unlike stack, and how heap addresses play a role.
Details on how free() interacts with pointers and the importance of controlling overflow.
Various RAM targeting strategies including return addresses and library functions.
Further details on target options in RAM including exception handlers and function pointers.