Я пытаюсь сделать переполнение стека для курса в университете. В бинарном файле, который я собираюсь использовать, есть канарейка, однако есть способ утечки этой канарейки в стандартный вывод. Разумеется, канарейка состоит из нескольких случайных байтов, поэтому я не могу просто прочитать их из строки, которую программа выводит на стандартный вывод.
По этой причине я использую python и pwntools вроде p.recv(timeout = 0.01).encode("hex")
. (я использую pwntools только потому, что я не знаю другого способа прочитать вывод в шестнадцатеричном формате, если есть более простой способ, который я, конечно, могу использовать что-то еще)
Это работает более-менее работает как положено, мне удается записать область памяти, которая находится за канарейкой. Тем не менее, я получаю segfault, поэтому у меня, очевидно, есть некоторые проблемы со стековым потоком, который я вызываю. Мне нужен способ отладки, например, просмотр стека после того, как я предоставил входные данные, которые вызывают стекопоток.
А теперь без лишних слов актуальный вопрос: Могу ли я отладить процесс, с которого я начал pwntools (например, process("./myprog")
) в GDB или какой-либо другой программе, которая может показать мне содержимое стека?
Я уже пытался получить pid в python и использовать gdb attach для присоединения к нему. pid, но это не сработало.
Примечание. В бинарном файле, который я пытаюсь использовать, установлен guid. Не знаю, имеет ли это значение.