0Pricing
Assembly Language & x86 Low-Level Systems Programming · Lesson

Buffer Overflows and Shellcode

Explore the mechanics of buffer overflow vulnerabilities and how they can be exploited to inject and execute malicious shellcode.

Intro: Buffer Overflows

Welcome to a critical topic in low-level security: Buffer Overflows. These are a type of software vulnerability that can allow attackers to gain control over a program.

Essentially, a buffer overflow occurs when a program tries to write more data into a fixed-size memory buffer than it was designed to hold. This excess data 'overflows' into adjacent memory regions.

What's a Buffer?

In programming, especially in languages like C or assembly, a buffer is simply a block of memory reserved for storing data. Think of it like a container with a specific capacity.

  • Buffers are often used for temporary storage, like holding user input or network data.
  • They can be declared as arrays of characters (strings) or other data types.
  • For example, char username[32]; declares a buffer that can hold up to 31 characters plus a null terminator.

All lessons in this course

  1. Cache Coherency and Performance
  2. Hand-Optimizing Critical Sections
  3. Buffer Overflows and Shellcode
  4. Branch Prediction and Speculative Execution
← Back to Assembly Language & x86 Low-Level Systems Programming