Я воссоздаю переполнение буфера из 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>