Я пытаюсь выполнить атаку переполнения буфера для данного уязвимого кода. Но кажется, что это так. идет не так, потому что, хотя мои строки эксплойта не повреждают стек, я вообще не могу заставить мой ассемблерный код (встроенный в строку эксплойта) работать.
Вот фрагмент значений памяти перед выполнением инструкции 'ret' программы, которую я хочу атаковать.
0x55683984: 0x5568398c 0x...(old r.a) 0x68e322a1 0x0000c31c
0x55683994: 0xf7fa9400 0x0804a3d7 0x556839c0 0xf7e518d0
На этом этапе что-то идет не так, потому что он не может вытолкнуть стек и сделать точку% eip для выталкиваемого значения? Итак, мой ассемблерный код эксплойта не работает. (0x68e322a1 0x0000c31c) Gdb сообщает, что ни одна функция не содержит программный счетчик для выбранного фрейма. и когда я пытаюсь выполнить его без отладки, возникает ошибка сегментации.
Связана ли эта проблема с длиной моей сборки? (в данном случае 6)?
Program received signal SIGSEGV, Segmentation fault.
0x5568398c in ?? ()
(gdb) x 0x5568398c
0x5568398c: 0x68e322a1
как это может случиться, если я могу видеть, что внутри адреса вызывает segfault?