exploitation
12 articles
Cybersecurity guides, tutorials, and insights about exploitation from Pwnsy.
ASLR and DEP Explained: The Two Pillars of Memory Protection
How ASLR and DEP stop memory-corruption exploits, what each one actually blocks, and where their limits leave a way through.
Buffer Overflow Explained: Overwriting the Return Address
How stack buffer overflows work, why writing past a buffer overwrites the return address, and the mitigations that stop hijacked control flow.
Exploit Mitigations Explained: The Modern Defense Stack
A plain tour of the mitigation stack: DEP, ASLR, stack canaries, CFG, Intel CET, and sandboxing, what each stops, and why they only work in layers.
Format String Vulnerabilities: When Input Becomes Format
How uncontrolled format strings turn user input into read and write primitives, why the bug is so severe, and how to defend against it.
Heap Spraying: Grooming Memory for Predictable Addresses
How heap spraying floods memory with attacker data to place a payload at a predictable address, its browser roots, and how to defend.
Integer Overflow Explained: When Arithmetic Wraps Around
How integer overflow and wraparound lead to undersized allocations and buffer overflows, and the safe-arithmetic practices that prevent it.
Return-Oriented Programming: Bypassing DEP with Gadgets
How ROP chains existing code gadgets to defeat DEP and NX, why it beats classic shellcode injection, and how CFG and CET fight back.
Shellcode Explained: Payloads, Staging & Why NX Matters
What shellcode is, how staged and stageless payloads differ, and why DEP and ASLR make injection harder. Conceptual, no payloads.
Stack vs Heap Overflow: Two Memory Regions, Two Exploits
How stack and heap buffer overflows differ, why their exploitation models diverge, and what defends each region of memory.
TOCTOU Race Conditions: The Gap Between Check and Use
How time-of-check to time-of-use races let attackers slip between a validation and the action, and how atomic operations close the window.
Type Confusion Explained: When Objects Are the Wrong Type
How type confusion makes a program treat memory as the wrong type, why that corrupts memory and enables code execution, and how to defend.
Use-After-Free: Dangling Pointers & Reused Objects
How use-after-free bugs let attackers control freed memory, why browsers see so many, and the allocator and language defenses that stop them.