Я хочу использовать переполнение буфера на основе стека в образовательных целях.
Существует типичная функция, вызываемая с параметром из main, который вводится программой в локальный буфер, в котором сохраняется параметр. Учитывая ввод, такой как nops + shellcode + address_shellcode
, я воспользуюсь им.
После отладки с помощью gdb я нашел адрес кода оболочки, поскольку он будет передаваться как параметр, и сразу после strcpy
я проверил стек и $ ebp + 8
адрес возврата был успешно перезаписан адресом кода оболочки. Итак, у меня есть то, что я хочу. Но когда я перешел к выполнению, я получил:
->shellcode_address in ?? ()
, а затем
Cannot find bound of current function
Адрес возврата имеет то значение, которое я хочу. Есть идеи, что происходит?
Также, когда я выполняю его, у меня возникает ошибка сегментации, и я скомпилировал его с помощью -g -fno-stack-protector
. Почему?