Exploitation
12 articles
Cybersecurity guides, tutorials, and insights about exploitation from Pwnsy.
ASLR and DEP: 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: 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: 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: 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: 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: Filesystem, Web and Limit-Overrun Attacks
How the gap between a check and a use is exploited, from symlink swaps in privileged programs to concurrent requests that redeem one voucher many times, and the atomic fixes that close the window.
Type Confusion: 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.