|
Переполнение буфера в стеке. Часть 1 kas1e Xakep, номер #050, стр. 050-062-7 strcpy(little_buffer,argv[1]); } /* strcpy является одной из функций, которая не заботится о размере буфера */ # gcc -w test.c -o test # ./test aaaaaaaabbbb Segmentation fault Вот! Программа попыталась вернуться на bbbb (62626262 в hex). Т.е. мы перезаписали то, что нам надо, и в EIP оказалось 62626262. Чтобы подтвердить информацию, проверим это в отладчике: # gdb -q ./test (gdb) set args aaaaaaaabbbb (gdb) run Starting program: /a.out aaaaaaaabbbb Program received signal SIGSEGV, Segmentation fault. 0x62626262 in ?? () (gdb) Заключение Мы подошли к логическому завершению одной из двух частей нашей темы. Что мы получили? А получили мы самое натуральное переполнение буфера в стеке. Главное, освой этот теоретический материал. Дальше я буду описывать, каким образом мы можем подсунуть наш код, и как этот код сделать. Как написать программу, которая будет всем этим заниматься. А на этом, к сожалению, пока все. Изучай ссылки и жди следующей статьи. |