4.8 KiB
WWW2Exec - .dtors & .fini_array
{% hint style="success" %}
Naučite i vežbajte hakovanje AWS-a:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Naučite i vežbajte hakovanje GCP-a: HackTricks Obuka GCP Crveni Tim Stručnjak (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakovanje trikova slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
.dtors
{% hint style="danger" %} Danas je vrlo čudno naći binarni fajl sa .dtors sekcijom! {% endhint %}
Destruktori su funkcije koje se izvršavaju pre završetka programa (nakon što se funkcija main
završi).
Adrese ovih funkcija se čuvaju unutar .dtors
sekcije binarnog fajla i stoga, ako uspete da upišete adresu za shellcode u __DTOR_END__
, to će biti izvršeno pre nego što program završi.
Dobijte adresu ove sekcije sa:
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
Obično ćete pronaći DTOR markere između vrednosti ffffffff
i 00000000
. Dakle, ako vidite samo te vrednosti, to znači da nema registrovane funkcije. Dakle, prepšišite 00000000
sa adresom shell koda da biste ga izvršili.
{% hint style="warning" %} Naravno, prvo morate pronaći mesto za čuvanje shell koda kako biste ga kasnije mogli pozvati. {% endhint %}
.fini_array
Essentially this is a structure with functions that will be called before the program finishes, like .dtors
. This is interesting if you can call your shellcode just jumping to an address, or in cases where you need to go back to main
again to exploit the vulnerability a second time.
objdump -s -j .fini_array ./greeting
./greeting: file format elf32-i386
Contents of section .fini_array:
8049934 a0850408
#Put your address in 0x8049934
Večita petlja
Da biste zloupotrebili .fini_array
kako biste dobili večitu petlju, možete proveriti šta je urađeno ovde: Ako imate najmanje 2 unosa u .fini_array
, možete:
- Koristite svoj prvi zapis da pozovete ranjivu funkciju za proizvoljni zapis ponovo
- Zatim, izračunajte povratnu adresu na steku koju čuva
__libc_csu_fini
(funkcija koja poziva sve funkcije.fini_array
) i stavite tamo adresu__libc_csu_fini
- Ovo će naterati
__libc_csu_fini
da pozove sam sebe ponovo izvršavajući ponovo funkcije.fini_array
koje će pozvati ranjivu WWW funkciju 2 puta: jednom za proizvoljni zapis i još jednom da ponovo prepiše povratnu adresu__libc_csu_fini
na steku da bi se ponovo pozvao.
{% hint style="danger" %}
Imajte na umu da sa Full RELRO, odeljak .fini_array
je postavljen kao samo za čitanje.
U novijim verzijama, čak i sa [Partial RELRO] odeljak .fini_array
je takođe postavljen kao samo za čitanje.
{% endhint %}
{% hint style="success" %}
Naučite i vežbajte hakovanje AWS:HackTricks Training AWS Red Team Expert (ARTE)
Naučite i vežbajte hakovanje GCP: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.