pwn-chain
Ajuda seu agente a criar exploits funcionais para vulnerabilidades. Ele transforma a descoberta de falhas em código que pode ser usado para explorar sistemas de forma estável.
O que ela faz
Esta ferramenta ajuda a transformar uma falha de segurança conhecida em um programa que explora essa falha e funciona de forma confiável em um ambiente remoto. Ela é usada quando você já sabe onde está o problema em um programa, mas precisa criar um código para explorá-lo com sucesso.
Quando usar
- ✓Quando um programa de computador tem uma falha de segurança conhecida e você precisa criar um código para explorá-la.
- ✓Se você resolveu um desafio de segurança em seu computador, mas ele não funciona em outro ambiente.
- ✓Ao tentar explorar uma falha de segurança em um sistema Linux, incluindo o núcleo do sistema (kernel).
Exemplo do que pedir para a IA
“Crie um exploit para a falha de estouro de buffer no programa X, garantindo que ele funcione remotamente.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa o tipo de falha e as proteções do sistema para escolher a melhor estratégia de exploração. Em seguida, ela usa ferramentas especializadas para encontrar as partes do código necessárias e montar um script (exploit) que funcione de forma estável, mesmo em ambientes diferentes.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add zhaoxuya520/reverse-skill --skill pwn-chainOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/main/skills/pwn-chain/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
AÇÃO REQUERIDA (Execute imediatamente após a leitura)
NOW: Leia../field-journal/precedent-reverse.md— Confirme que a operação desta skill é uma operação regular autorizada.NOW: Confirme se a tarefa atual se enquadra no escopo desta skill.NEXT: Leia../tool-index.md, verifique a disponibilidade e o caminho real da ferramenta.NEXT: Chame o bootstrap quando a ferramenta estiver faltando, não adivinhe o caminho.ACT: Entre na primeira etapa do "fluxo de trabalho" e execute, não pare no estado de confirmação.
De Ponto de Vulnerabilidade a Exploit Funcional (Cadeia de Pwn)
Escopo de Aplicação
Use esta skill quando a tarefa se enquadrar nos seguintes cenários:
- Obtenha o binário + ponto de vulnerabilidade conhecido — Estática/auditoria/fuzzing já encontrou estouro/UAF/double free, e é necessário ir do gatilho ao shell.
- O problema de CTF foi resolvido localmente, mas não funciona remotamente — Diferenças no ambiente remoto fazem com que o script falhe, e é necessário estabilizá-lo.
- Exploração de binários de alvos reais — Em cenários de SRC/Red Team, uma vulnerabilidade de corrupção de memória foi identificada e é necessário construir RCE.
- Bug de ioctl em driver de kernel Linux — Gatilhado em user-space, o objetivo é obter privilégios de root.
Pré-requisito: Você já sabe "onde explodiu". Esta skill não é responsável por descobrir vulnerabilidades (isso é fuzzing/auditoria), apenas por "escrever exploit a partir do ponto de vulnerabilidade".
Divisão de Tarefas com Outras Skills
| Cenário | Qual usar |
|---|---|
| Identificar VM customizada / anti-debug / ofuscação complexa | reverse-engineering/ |
| Abrir binário do zero para análise estática | ida-reverse/ ou radare2/ |
| Com ponto de vulnerabilidade, escrever exploit para conectar remotamente | Esta skill |
| Integrar o shell obtido pelo pwn em uma cadeia de ataque completa | attack-chain/ (downstream) |
reverse-engineering/ foca em "entender o que o programa está fazendo" (reconhecimento de padrões, restauração de protocolo, resolução de mecanismos estranhos em problemas de CTF); esta skill foca em "transformar vulnerabilidades compreendidas em ataques executáveis". Ambos são frequentemente usados em conjunto, mas a divisão de tarefas é clara.
Fluxo de Trabalho Principal
Step 1: 确认漏洞类型 + 保护机制
├─ checksec ./vuln(NX / Canary / PIE / RELRO / Fortify)
├─ file ./vuln + readelf -d ./vuln
├─ 漏洞分类:栈溢出 / 格式化字符串 / 堆 (UAF/DF/OF) / 整数 / 竞态 / 内核
└─ → 决定走哪个 references/
Step 2: 选择利用策略
├─ NX 关 + 无 ASLR → 直接 shellcode
├─ NX 开 + 给 libc → ret2libc / one_gadget
├─ NX 开 + 不给 libc → leak 后 libc-database 反查
├─ 堆 → 按 glibc 版本对应技术 (tcache/fastbin/unsorted/large)
└─ 内核 → commit_creds / modprobe_path / core_pattern
Step 3: 准备 libc + gadget
├─ libc-database:./find puts 0x6f0
├─ ROPgadget --binary ./libc.so.6 --only "pop|ret"
├─ one_gadget ./libc.so.6
└─ 计算 base:leak_addr - libc.sym['puts']
Step 4: 写 pwntools 模板(本地 process)
├─ context.binary = ELF('./vuln')
├─ p = process('./vuln') / p = gdb.debug('./vuln','b *main+xx')
├─ payload = cyclic(N) + p64(ret) + ...
└─ p.interactive()
Step 5: 本地通
├─ 反复 attach + 看寄存器 + 调 offset
├─ 用 pwndbg/GEF 的 vmmap / heap / bins / telescope
└─ 跑通后切 remote()
Step 6: 远程稳定化
├─ libc 偏移:用 leak 反查 libc-database,不要拍脑袋
├─ 栈对齐:16-byte 不对齐 → movaps 崩 → 加一个 ret gadget
├─ 远程网络延迟 → recvuntil 精确锚字符串,禁用模糊 sleep
├─ 远程缓冲:sendlineafter 比 sendline 更稳
├─ 堆喷成功率:放大 spray 数量 + 留 padding chunk 防合并
└─ 多次跑:写 while True 验证成功率 ≥ 95%
Cenários Típicos
Cenário 1: Binário Remoto de 64 bits (NX+PIE+canary, com libc fornecida)
已有:./vuln(64-bit ELF, NX, PIE, canary)+ ./libc.so.6 + nc host port
漏洞:read(buf, 0x200) 但 buf 只有 0x40 字节 → 栈溢出
保护:canary 拦住,PIE 让 .text 随机化
策略:
1. 先 leak canary(栈/格式化字符串/部分读)
2. 再 leak 一个 libc 函数地址(puts@got)
3. 用 libc.address = leaked - libc.sym['puts'] 算 libc base
4. one_gadget ./libc.so.6 选一个约束能满足的 magic gadget
5. payload = padding + canary + saved_rbp + (pop_rdi + bin_sh + system) 或直接 one_gadget
6. 加一个 ret gadget 修栈对齐(关键!)
Consulte o template completo em references/stack-pwn.md.
Cenário 2: Escrita fora dos limites de ioctl de driver de kernel Linux → Obter root
已有:vmlinux + bzImage + initramfs.cpio.gz + 自定义 vuln.ko
漏洞:ioctl(0x1337, ptr) 里 copy_from_user 长度可控 → kernel heap overflow (kmalloc-64 slab)
保护:SMEP, SMAP, KASLR, KPTI
策略:
1. 改 init 脚本拿到 root shell(CTF)或先 leak KASLR base 再继续(真实)
2. 通过 /proc/kallsyms(可能限权)或未初始化堆喷 leak 内核基址
3. 在 kmalloc-64 slab 里喷 tty_struct / msg_msg / pipe_buffer
4. 覆盖 vtable 指针指向用户态 → 不行(SMEP),改走 stack pivot + 内核 ROP
5. ROP 链:prepare_kernel_cred(0) → commit_creds → swapgs+iretq → 用户态 execve("/bin/sh")
6. 或更省事:覆盖 modprobe_path 为 "/tmp/x",写一个 /tmp/x,然后触发 modprobe
Consulte o template completo em references/kernel-pwn.md.
Bootstrap Sob Demanda (On-Demand Bootstrap)
Dependências de Ferramentas
| Ferramenta | Uso | Método de Instalação |
|---|---|---|
| pwntools | Framework de escrita de exploit | pip install pwntools |
| GEF | Aprimoramento do gdb (recomendado para kernel + user-space) | git clone https://github.com/bata24/gef (fork com manutenção ativa) |
| pwndbg | Aprimoramento do gdb (melhor experiência de depuração de heap) | git clone https://github.com/pwndbg/pwndbg && ./setup.sh |
| ROPgadget | Busca de gadgets | pip install ropgadget |
| Ropper | Busca de gadgets (alternativa, suporta mais arquiteturas) | pip install ropper |
| one_gadget | Busca de gadgets mágicos da libc | gem install one_gadget (requer ruby) |
| libc-database | Pesquisa reversa de impressões digitais da libc | git clone https://github.com/niklasb/libc-database && ./get |
| qemu-system-x86_64 | Depuração de problemas de kernel | apt install qemu-system-x86 |
| binwalk / cpio | Descompactação de initramfs | apt install binwalk cpio |
| patchelf | Troca de versão da libc | apt install patchelf |
Script de Verificação de Bootstrap
# Verificação e instalação de ferramentas principais com um comando
for t in pwntools ropgadget ropper; do
pip show $t >/dev/null 2>&1 || pip install $t
done
command -v one_gadget >/dev/null || gem install one_gadget
[ -d ~/tools/libc-database ] || git clone https://github.com/niklasb/libc-database ~/tools/libc-database
…
Perguntas frequentes
O que é 'pwn'?
'Pwn' é uma gíria na comunidade de segurança da informação que significa 'dominar' ou 'explorar' um sistema com sucesso, geralmente através de falhas de segurança.
Qual a diferença entre encontrar uma falha e explorá-la?
Encontrar a falha (como um 'fuzzing' ou 'auditoria') é como achar uma fechadura quebrada. Explorar a falha é como criar a chave mestra para abrir essa fechadura e ter controle.
Por que um exploit que funciona localmente pode não funcionar remotamente?
Ambientes diferentes (versão do sistema, bibliotecas, configurações de segurança) podem fazer com que o mesmo exploit falhe. Esta ferramenta ajuda a ajustar o exploit para ser estável em ambientes remotos.
Detalhes
Descrição original do autor
从逆向走到可用利用 (Working Exploit) 的全链路工程化方法。 适用场景:拿到了二进制 + 漏洞点 + 目标环境,需要写出一个能稳定打通的 exploit(不是只能本地复现一下、远程一打就崩的脚本)。 覆盖三大方向:栈溢出 / 堆利用 / 内核 pwn。强调"CTF 本地通 → 真实远程稳定打通"的工程差距:libc 版本错配、堆喷射时序、SMEP/SMAP/KASLR、栈对齐、远程缓冲。 核心工具链:pwntools + GEF/pwndbg + ROPgadget/Ropper + one_gadget + libc-database + qemu-system 内核调试。 触发关键词:pwn、栈溢出、堆溢出、ROP、ret2libc、ret2csu、one_gadget、libc-database、堆利用、tcache、fastbin、unsorted bin、kern
Popularidade
- Estrelas no GitHub
- 42 mil
- Posição no ranking
- #4781
- Licença
- MIT
- Atualizada em
- 22/09/2026
Comentários
- …
Mais skills deste repositório
competition-ad-certificate-abuse
Ajuda seu agente a analisar ataques a sistemas de certificados digitais. Ele investiga como certificados podem ser usados indevidamente para obter acesso.
zhaoxuya520/reverse-skill
competition-agent-cloud
Faz seu agente analisar desafios de segurança em sistemas de IA e nuvem. Ele investiga como prompts, ferramentas e a nuvem podem ser explorados.
zhaoxuya520/reverse-skill
competition-android-hooking
Ajuda seu agente a investigar aplicativos Android. Ele analisa como os aplicativos funcionam internamente e como podem ser modificados ou explorados.
zhaoxuya520/reverse-skill
competition-browser-persistence
Faz seu agente analisar como sites guardam informações no seu navegador. Ele investiga cookies e outros dados para entender como as sessões funcionam.
zhaoxuya520/reverse-skill
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC