Отладка программы, открываемой pwntools - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь сделать переполнение стека для курса в университете. В бинарном файле, который я собираюсь использовать, есть канарейка, однако есть способ утечки этой канарейки в стандартный вывод. Разумеется, канарейка состоит из нескольких случайных байтов, поэтому я не могу просто прочитать их из строки, которую программа выводит на стандартный вывод.

По этой причине я использую python и pwntools вроде p.recv(timeout = 0.01).encode("hex"). (я использую pwntools только потому, что я не знаю другого способа прочитать вывод в шестнадцатеричном формате, если есть более простой способ, который я, конечно, могу использовать что-то еще)

Это работает более-менее работает как положено, мне удается записать область памяти, которая находится за канарейкой. Тем не менее, я получаю segfault, поэтому у меня, очевидно, есть некоторые проблемы со стековым потоком, который я вызываю. Мне нужен способ отладки, например, просмотр стека после того, как я предоставил входные данные, которые вызывают стекопоток.

А теперь без лишних слов актуальный вопрос: Могу ли я отладить процесс, с которого я начал pwntools (например, process("./myprog")) в GDB или какой-либо другой программе, которая может показать мне содержимое стека?

Я уже пытался получить pid в python и использовать gdb attach для присоединения к нему. pid, но это не сработало.

Примечание. В бинарном файле, который я пытаюсь использовать, установлен guid. Не знаю, имеет ли это значение.

...