Estoy intentando seguir el trabajo de investigación de Tiger Security para la explotación de ARM: Enlace
Para la explotación de desbordamiento de pila simple, el código es:
#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;
}
Sin embargo, cuando lo ejecuto en mi máquina ARM de Debian que se ejecuta en Qemu, en Ubuntu. Todo funciona bien, excepto la parte que cuando tengo que colocar las direcciones que llenan el puntero de marco, el puntero de pila y la dirección de retorno.
Por lo tanto, el código resultante final para ejecutarse bajo GDB (en mi caso) se convierte en:
r 'printf "AAAABBBBCCCC\x94\xac\x8b\xbe\[FP 4 bytes here]\x38\x84"'
En mi caso: Deseado
SP : 0xbe8bac94
FP: 0x000084ac
Return Address: 0x00008438
Dado que el FP contiene bytes nulos en el medio, ¿hay alguna forma de que pueda usar eso en mi explotación? Ya que, en el medio, no puedo usar \ xac \ x84.