В настоящее время я слежу за исправлениями в Руководстве по шеллкодеру (2-е издание )а>. Книга немного устарела, но все равно хороша. Моя проблема сейчас в том, что я не могу угадать, как долго должна быть моя полезная нагрузка. Я пытался следовать каждому шагу (и запускать gdb с теми же аргументами), и я пытался угадать, где начинается буфер, но я точно не знаю . Я тоже новичок в этом, так что это имеет смысл.
У меня есть уязвимая программа с strcpy()
и buffer[512]
. Я хочу сделать так, чтобы стек переполнялся, поэтому я выполняю некоторые A с программой (например, опечатки для справочника шеллкодеров). Я хочу узнать, какой длины должна быть полезная нагрузка (без ASLR), поэтому теоретически мне просто нужно найти, где находится буфер.
Поскольку я новичок, я не могу опубликовать изображение, но предпочтительный вывод из книги имеет полные 4 строки «А» (0x41414141), и мой выглядит так:
(gdb) x/20xw $esp - 532
0xbffff968 : 0x0000000 0xbfffffa0e 0x41414141 0x41414141
0xbffff968 0x41414141 0x41414141 0x00004141 0x0804834
Какой это адрес? Как я узнаю, где начинается этот буфер? Я хочу сделать это, чтобы продолжить работу над книгой. Я понимаю, что буфер находится где-то там из-за пятерок, которые я пробежал. Но если я хочу узнать, какой длины должна быть полезная нагрузка, мне нужна точка, с которой она начинается.