# Indicizzazione degli Array
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)! Altri modi per supportare HackTricks: * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
## Informazioni di Base Questa categoria include tutte le vulnerabilità che si verificano perché è possibile sovrascrivere determinati dati attraverso errori nella gestione degli indici negli array. Si tratta di una categoria molto ampia senza una metodologia specifica poiché il meccanismo di sfruttamento si basa completamente sulle condizioni della vulnerabilità. Tuttavia, qui puoi trovare alcuni bei **esempi**: * [https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html](https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html) * Ci sono **2 array in collisione**, uno per gli **indirizzi** in cui sono memorizzati i dati e uno con le **dimensioni** di tali dati. È possibile sovrascrivere uno con l'altro, consentendo di scrivere un indirizzo arbitrario indicandolo come dimensione. Ciò consente di scrivere l'indirizzo della funzione `free` nella tabella GOT e quindi sovrascriverlo con l'indirizzo di `system`, e chiamare free da una memoria con `/bin/sh`. * [https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html](https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html) * 64 bit, no nx. Sovrascrivere una dimensione per ottenere una sorta di buffer overflow in cui tutto verrà utilizzato come numero doppio e ordinato dal più piccolo al più grande, quindi è necessario creare un shellcode che soddisfi tale requisito, tenendo conto che il canary non dovrebbe essere spostato dalla sua posizione e infine sovrascrivere il RIP con un indirizzo a ret, che soddisfa i requisiti precedenti e mettendo l'indirizzo più grande un nuovo indirizzo che punta all'inizio dello stack (leaked dal programma) in modo da poter utilizzare il ret per saltare lì. * [https://faraz.faith/2019-10-20-secconctf-2019-sum/](https://faraz.faith/2019-10-20-secconctf-2019-sum/) * 64 bit, no relro, canary, nx, no pie. C'è un off-by-one in un array nello stack che consente di controllare un puntatore garantendo WWW (scrive la somma di tutti i numeri dell'array nell'indirizzo sovrascritto dall'off-by-one nell'array). Lo stack è controllato in modo che l'indirizzo GOT `exit` venga sovrascritto con `pop rdi; ret`, e nello stack viene aggiunto l'indirizzo a `main` (tornando a `main`). Viene utilizzata una catena ROP per filtrare l'indirizzo di put nella GOT usando puts (`exit` verrà chiamato quindi chiamerà `pop rdi; ret` eseguendo quindi questa catena nello stack). Infine viene utilizzata una nuova catena ROP che esegue ret2lib. * [https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html) * 32 bit, no relro, no canary, nx, pie. Sfrutta un cattivo indice per filtrare gli indirizzi di libc e heap dallo stack. Sfrutta il buffer overflow per eseguire un ret2lib chiamando `system('/bin/sh')` (è necessario l'indirizzo dell'heap per eludere un controllo).