Array Indexing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ova kategorija uključuje sve ranjivosti koje se javljaju jer je moguće prepisati određene podatke kroz greške u rukovanju indeksima u nizovima. To je veoma široka kategorija bez specifične metodologije, jer mehanizam eksploatacije potpuno zavisi od uslova ranjivosti.
Međutim, ovde možete pronaći neke lepe primere:
Postoje 2 kolidirajuća niza, jedan za adrese gde su podaci sačuvani i jedan sa veličinama tih podataka. Moguće je prepisati jedan iz drugog, omogućavajući pisanje proizvoljne adrese označavajući je kao veličinu. Ovo omogućava pisanje adrese free
funkcije u GOT tabeli, a zatim je prepisivanje adresom system
, i pozivanje free iz memorije sa /bin/sh
.
64 bita, bez nx. Prepišite veličinu da biste dobili neku vrstu prelivanja bafera gde će sve biti korišćeno kao dvostruki broj i sortirano od najmanjeg do najvećeg, tako da je potrebno kreirati shellcode koji ispunjava taj zahtev, uzimajući u obzir da se kanar ne sme pomerati sa svoje pozicije i konačno prepisivanje RIP-a sa adresom za ret, koja ispunjava prethodne zahteve i postavljanje najveće adrese na novu adresu koja pokazuje na početak steka (procurila od programa) tako da je moguće koristiti ret za skakanje tamo.
64 bita, bez relro, kanar, nx, bez pie. Postoji off-by-one u nizu na steku koji omogućava kontrolu pokazivača dodeljujući WWW (upisuje sumu svih brojeva niza u prepisanu adresu zbog off-by-one u nizu). Stek je kontrolisan tako da je GOT exit
adresa prepisana sa pop rdi; ret
, a na stek se dodaje adresa do main
(ponovo se vraća na main
). Koristi se ROP lanac za curenje adrese stavljene u GOT koristeći puts (exit
će biti pozvan, tako da će pozvati pop rdi; ret
, stoga izvršavajući ovaj lanac na steku). Na kraju se koristi novi ROP lanac koji izvršava ret2lib.
32 bita, bez relro, bez kanara, nx, pie. Iskoristite loše indeksiranje da biste procurili adrese libc i heap-a iz steka. Iskoristite prelivanje bafera da uradite ret2lib pozivajući system('/bin/sh')
(adresa heap-a je potrebna da bi se zaobišla provera).