
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: Aprile 2001 ml@sikurezza.org Soggetto: Re[2]: format string Mittente: garph0 Data: 23 Apr 2001 20:02:51 -0000
dunque... sul sito del CDC c'e' un articolo di Dildog sullo smashing dello stack
sotto NT, e' piuttosto dettagliato, magari puoi vedere li' per avere
due dritte :) eccolo:
http://www.cultdeadcow.com/cDc_files/cDc-351/
buon lavoro
Saturday, April 21, 2001, 3:41:54 PM, Kundera wrote:
> At 17.21 20/04/01 +0200, you wrote:
>>Ciao,
>>
>>Stò leggendo un articolo che spiega il funzionamento delle vulnerabilità
>>basate sulle format string.
>>
>>Sul documento c'è scritto che la stringa di formattazione del printf (e dei
>>comandi della stessa famiglia) viene caricata sullo stack e da quello che
>>ho capito è proprio per questo che si riesce ad exploitare. Ho scritto 2
>>righe in C per provare, ma non ho avuto i risultati attesi.
>>Questi sono il sorgente C e i risultati:
>>
>>----------prog.c-----------
>>main()
>>{
>>unsigned char buff[16];
>>memset(buff,'\xCC', sizeof(buff));
>>
>>printf("\nAAAAAAAA__%08x.%08x.%08x.%08x.%08x.%08x.%08x\n");
>>}
>>----------fine prog.c-----------
>>
>>
>>$ gcc prog.c -o prog
>>$ prog
>>
>>AAAAAAAA__cccccccc.cccccccc.cccccccc.cccccccc.bffff9e8.400349cb.00000001
>>$
>>
>>Il parametro di formattazione %08x stampa 4 byte e fa avanzare il puntatore
>>dello stack.
>>La stampa comincia dalla posizione attuale dello stack e prosegue verso
>>l'alto della pila.
>>
>>Quello che non mi torna è che se la stringa di formattazione viene messa
>>nello stack dovrebbe essere stampata prima della variabile buff, in quanto
>>inserita dopo (mi aspettavo di trovare una serie di 8 byte \x41
>>corrispondente agli 8 caratteri A seguiti dal resto della stringa di
>>formattazione). Invece, come si può vedere nel risultato, i primi byte
>>stampati sono proprio quelli di buff e la stringa di formattazione non c'è.
> Secondo me non c'e' perche' nello stack non c'e' la stringa ma l'indirizzo.
> E poi l'indirizzo da dove vuoi visualizzare la memoria devi fornirlo cosi' :
> printf("\n\x01\x13\x81\b1__%08x.%08x.%08x.%08x.%08x.%08x.%08x\n");
> cioe' l'indirizzo 0xb1811301 .
> <--Kundera-->
> --Digital Skull BBS Sys0p--
> --+39-2-93163367 24h/24h 8N1 Ansi--
> --kundera@tiscalinet.it--
> ________________________________________________________
> http://www.sikurezza.org - Italian Security Mailing List
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005