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

3.7 KiB

Uobičajeni problemi sa eksploatacijom

{% hint style="success" %} Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks
{% endhint %}

FDs u daljinskoj eksploataciji

Kada se šalje eksploatacija na daljinski server koji poziva system('/bin/sh'), to će se izvršiti u procesu servera, a /bin/sh će očekivati ulaz sa stdin (FD: 0) i će ispisivati izlaz na stdout i stderr (FD-ovi 1 i 2). Tako da napadač neće moći da interaguje sa shell-om.

Jedan od načina da se to reši je da se pretpostavi da je kada je server pokrenut, kreiran FD broj 3 (za slušanje) i da će vaša veza biti u FD broju 4. Stoga, moguće je koristiti sistemski poziv dup2 da se duplira stdin (FD 0) i stdout (FD 1) u FD 4 (onaj od napadačeve veze) kako bi se omogućila komunikacija sa shell-om kada 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

Napomena da socat već prenosi stdin i stdout na soket. Međutim, pty režim uključuje DELETE karaktere. Dakle, ako pošaljete \x7f ( DELETE -) to će izbrisati prethodni karakter vašeg eksploita.

Da biste to zaobišli, escape karakter \x16 mora biti prethodjen bilo kojim \x7f koji se šalje.

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

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}