offensive-coding/stack-exploitation-dev/SKILL.md
Auth/lab dev: stack exploitability research; frame layout, canaries, ret2libc/ROP/SROP/JOP paths, mitigations, data-only outcomes.
npx skillsauth add aeondave/malskill stack-exploitation-devInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Goal: turn a stack bug into the right primitive for that ABI and mitigation set, not into reflex shellcode or nostalgic SEH.
alloca misuse, format-string-assisted stack corruption, or uninitialized stack leak is in play.PIE / ASLR with a realistic leak-first, partial-overwrite, or retry-model plan instead of guessed bases.ret2libc, ret2dlresolve, ret2csu, SROP, stack pivots, JOP/COP/COOP, or data-only outcomes.If the problem is mostly gadget selection, chain scoring, and ABI-correct ROP assembly, use offensive-coding/rop-development-dev after this skill narrows the route.
x86-64 SysV: 16-byte alignment, classic ret2libc / PLT / resolver patterns.Windows x64: rcx, rdx, r8, r9 + 32-byte shadow space; /GS, CFG, EHCONT, and hardware shadow stack may dominate exploitability.AArch64: x0-x7 args, x30 link register, PAC/BTI/ShadowCallStack may shrink backward-edge options.alloca / stack-growth bug_FORTIFY_SOURCE/GS, CFG, EHCONT, hardware shadow stack| Environment | Bias toward | Avoid or de-prioritize |
|---|---|---|
| x86-64 Linux, no canary/no PIE | ret2win, short ret2libc, same-function re-entry | overbuilt multi-stage ROP |
| x86-64 Linux, NX + PIE/ASLR | leak-first ret2plt -> ret2libc, ret2csu helpers, pivots | hardcoded absolute offsets |
| x86-64 Linux, no libc leak but dynamic ELF + writable staging | ret2dlresolve | blind libc guessing |
| x86-64 Linux, sparse gadgets but clean syscall/sigreturn path | SROP, ret2syscall, ORW | long gadget lottery |
| x86-64 Linux with CET shadow stack / IBT | data-only, valid-target JOP/COP/COOP, non-return redirection | classic RET-chain as default answer |
| Windows x64 with /GS + CFG, no shadow stack | leak-first API-call ROP, partial overwrites, data-only | legacy SEH mindset |
| Windows x64 with shadow stack + EHCONT | data-only, valid CFG/EHCONT routes, COOP | push/ret, blind NtContinue, blind return smashing |
| AArch64 without PAC/BTI | LR overwrite when spilled, pivots, JOP/ROP, SROP if viable | x86-specific gadget assumptions |
| AArch64 with PAC/BTI/ShadowCallStack | authenticated pointer reuse, data-only, legitimate-target abuse | raw LR overwrite or arbitrary indirect branch |
| Family | Good fit | Typical result | Reality check |
|---|---|---|---|
| ret2win | no-PIE or known win target | immediate control-flow win | still great, but mostly a stage-zero luxury |
| ret2plt leak | imported print/write primitive exists | libc or code leak | default stage one on ELF |
| ret2libc | libc base known or leakable | system, execve, ORW, mprotect | still the Linux baseline when backward-edge CFI is absent |
| ret2dlresolve | dynamic ELF + writable staging | resolve symbol without libc base | strong when leaks are constrained |
| ret2csu | gadget-poor ELF | helper multi-register call setup | helper, not final trophy |
| SROP | sigreturn path + register starvation | one-frame register control | excellent when syscall setup is the real problem |
| saved frame-pointer pivot | off-by-one or short overwrite | move stack into BSS/heap/attacker buffer | often more realistic than RIP-first thinking |
| partial return overwrite | same-page code targets | ASLR-light pivot or function replay | low-byte wins matter |
| BSS / heap pivot | first bug too short for final chain | larger stage-two workspace | prefer the shortest stable second-input route |
| JOP/COP/COOP | CET / CFG / PAC-era targets | valid-target code reuse without raw ret abuse | more current than forcing ROP through hostile CFI |
| data-only stack corruption | canaries or shadow stacks block control hijack | auth bypass, length/path/callback corruption | often the right hardened-target ending |
| legacy SEH overwrite | 32-bit legacy Windows only | exception redirection | historical branch, not modern default |
PIE/text, libc, stack, heap), then treat leaks as stage one, not optional polish._FORTIFY_SOURCE: _chk aborts change bug shape and timing, but they do not magically erase leak paths or pre-check corruption./GS: protects selected functions and some vulnerable parameters, not every data-only route.NtContinue / RtlRestoreContext abuse is outdated unless the target build genuinely permits it.alloca/VLA leaps are compiler- and target-sensitive; validate actual probing behavior.ret2libc, syscall chains, or short ORW.ret2dlresolve.execve, ORW, or allowed-syscall paths over system("/bin/sh") reflexes.ret2libc / ret2dlresolve / SROP / pivot trade-offs.ret2plt / ret2main, PIE/text-base leaks, ret2dlresolve, low-byte wins, libc fingerprinting, and brute-force economics./GS, CFG, EHCONT, hardware shadow stack, and realistic Windows user-mode routes.leave; ret, stage-two pivots, and non-control-data stack wins.Load references only after architecture, primitive, and mitigation set are clear. Keep SKILL.md as the router; keep the depth in the references.
development
White-box auditing methodology for AI-generated ('vibe-coded') applications. Focuses on modern stack misconfigurations (Supabase, Next.js, Vercel).
development
Hybrid AI/Deterministic SAST methodology for discovering zero-day vulnerabilities in source code. Orchestrates structural search with AI-driven data flow and sink validation.
development
Auth assessment: hardware/embedded methodology; UART/JTAG/SWD/SPI/I2C, firmware extraction, boot/debug paths, embedded OS evidence.
devops
Container methodology: Identifying containerization limits, Docker/K8s misconfigurations, and executing escapes to the host node.