Как написать bash скрипт, который выполняет GDB в программе - PullRequest
0 голосов
/ 04 апреля 2020

Я воссоздаю переполнение буфера из http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Buffer_Overflow/Buffer_Overflow.pdf, и я хотел бы написать сценарий bash, который будет gdb для моего исполняемого файла "стек". Затем скрипт создаст точки останова и получит адреса начала (p & buffer) и конца (p $ ebp) буфера, в который они будут переданы ./exploit <& buffer, $ ebp> в качестве аргументов.

Когда я запускаю свой скрипт ..

#!/bin/sh
gdb stack
b main
b 14
run
b 23
c
p &buffer
p $ebp

Когда я его использую, GDB открывается на моем исполняемом файле. Однако остальная часть сценария не выполняется. Я предполагаю, что это потому, что GDB создает новый процесс. Я пробовал "стек gdb" $$ "", чтобы получить gdb в том же процессе, что и мой скрипт, но безуспешно.

Возможно ли то, что я пытаюсь сделать?

Редактировать:

Новый сценарий: Это правильно выводит адреса в командной строке

#!/bin/sh
gdb stack << 'EOF'
  b main
  run
  b 23
  c
  s
  p &buffer
  p $ebp
  quit
EOF

Как получить эти адреса, чтобы я мог передать их в качестве аргументов ./exploit?

Следующая строка моего bash файла будет ..

./exploit <&buffer> <$ebp>

1 Ответ

1 голос
/ 04 апреля 2020

Попробуйте

gdb -batch yourfile

, как указано в man gdb.

или посмотрите здесь в качестве примера.

...