# Problemas Comuns de Exploração {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## FDs na Exploração Remota Ao enviar um exploit para um servidor remoto que chama **`system('/bin/sh')`** por exemplo, isso será executado no processo do servidor, e `/bin/sh` esperará entrada do stdin (FD: `0`) e imprimirá a saída no stdout e stderr (FDs `1` e `2`). Portanto, o atacante não poderá interagir com o shell. Uma maneira de corrigir isso é supor que quando o servidor iniciou, ele criou o **FD número `3`** (para escuta) e que então, sua conexão estará no **FD número `4`**. Portanto, é possível usar a syscall **`dup2`** para duplicar o stdin (FD 0) e o stdout (FD 1) no FD 4 (o da conexão do atacante) para que seja viável contatar o shell uma vez que ele seja executado. [**Exemplo de exploit daqui**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit): ```python from pwn import * elf = context.binary = ELF('./vuln') p = remote('localhost', 9001) rop = ROP(elf) rop.raw('A' * 40) rop.dup2(4, 0) rop.dup2(4, 1) rop.win() p.sendline(rop.chain()) p.recvuntil('Thanks!\x00') p.interactive() ``` ## Socat & pty Note que o socat já transfere `stdin` e `stdout` para o socket. No entanto, o modo `pty` **inclui caracteres DELETE**. Portanto, se você enviar um `\x7f` ( `DELETE` -) ele **deletará o caractere anterior** do seu exploit. Para contornar isso, o **caractere de escape `\x16` deve ser precedido a qualquer `\x7f` enviado.** **Aqui você pode** [**encontrar um exemplo desse comportamento**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.** {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}