Overflow Binary Resource File
Zdroj přetečení vyrovnávací paměti může být vstupní data. Když přijde z prostředků Overflow binárním souboru, útočník musí změnit / připravit binární soubor takovým způsobem, že aplikace, po přečtení tohoto souboru, se stal náchylný ke klasickému útoku přetečení vyrovnávací paměti . Jediný rozdíl mezi tímto útokem a klasické Jedním z nich je zdrojem vstupních dat. Běžné příklady jsou speciálně vytvořený MP3, JPEG nebo ANI souborů, které způsobují přetečení zásobníku.
TBD
Aplikace přečte prvních 8 znaků z binárního souboru.
rezos @ dojo-labs ~ / OWASP / binární $ cat read_binary_file.c # Include <stdio.h> # Include <string.h> int main (void) { FILE * f; char p [8]; char b [8]; f = fopen ("file.bin", "r"); fread (b, sizeof (b), 1, f); fclose (f); strcpy (p, b); printf ("% s \ n", p); return 0; }
Vytvořený soubor obsahuje více než 8 znaků.
rezos @ dojo-labs ~ / OWASP / binární $ cat file.bin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Po pokusu o spuštění ještě jednou, bude aplikace skončí s:
rezos @ dojo-labs ~ / OWASP / binární $. / read_binary_file Segmentation fault
Selhání. Bylo to buffer overflow?
rezos @ dojo-labs ~ / OWASP / binární $ gdb-q. / read_binary_file Použití hostitele libthread_db knihovny "/ lib/libthread_db.so.1". (Gdb) r Spuštění programu: / home / rezos / OWASP / binární / read_binary_file Program přijímaného signálu SIGSEGV, Segmentation fault. 0xb7e4b9e3 v strcpy () from / lib/libc.so.6
Ano, to byl buffer overflow v strcpy () funkce.
Proč?
fread (b, sizeof (b), 1, f), - čte znaky z proudu f, sizeof (b) jednou, k ochrannému b. Vypadá to OK. Nicméně není tam žádný prostor pro '\ 0', která ukončí řetězec.
Whiile vykonávající strcpy (p, b), kde oba nárazníky jsou stejné, přepad se koná. Co způsobuje to je absence nulovým bytem / ukončovací znak do bufferu b []. Strcpy () funkce zkopírovat do vyrovnávací paměti p [] vše počínaje b [0] a končí na nulovým bytem. Útočník úspěšně provedla přetečení vyrovnávací paměti útok tím, že crafting speciální soubor.
Jmenovitě: