REFERENCE GUIDE

Binary triage and mitigation inventory

Before choosing an exploit family, establish the executable format, architecture, ABI, loader, and runtime dependencies.

Also known as: checksec · ELF triage

binary-triagepwn

Mechanism

Before choosing an exploit family, establish the executable format, architecture, ABI, loader, and runtime dependencies. Stack canaries, nonexecutable mappings, position-independent code, relocation protection, and control-flow protections constrain different parts of an exploit. A mitigation summary is a hypothesis; inspect actual headers, mappings, and runtime behavior to confirm what it protects.

Practical method

Hash the supplied file, inspect ELF headers and dynamic dependencies, then run only the challenge in its isolated environment. Identify input routes, maximum lengths, termination behavior, and crash conditions. Save the provided loader and libc alongside the binary so later address offsets remain reproducible.

file ./challenge
readelf -h -l -d ./challenge
sha256sum ./challenge

Interpreting evidence

Compare compile-time headers with the runtime mappings in the debugger. A PIE executable can still reveal its base through a leak. Full relocation protection limits writable relocation targets without preventing all writable control data.

Pitfalls and limits

Host libc mismatches change offsets and allocator behavior. Stripped symbols do not remove imports or unwind information. Architecture guesses based solely on filenames can invalidate every subsequent offset.

Sources & further reading

  1. readelf ↗binutils
  2. ELF ABI ↗elf

Content license: CC-BY-4.0. Source-derived sections retain their cited licenses and redistribution notices. How this reference is compiled →