gdb.debug
должен работать, если вы используете S SH, если вы установили context.terminal
на правильное значение (например, tmux).
Как использовать pwnlib.gdb
Вот копия и вставка ответа на аналогичный вопрос :
Вы можете использовать pwnlib.gdb для взаимодействия с gdb.
Вы можете использовать функцию gdb.attach (): Из документации:
bash = process('bash')
# Attach the debugger
gdb.attach(bash, '''
set follow-fork-mode child
break execve
continue
''')
# Interact with the process
bash.sendline('whoami')
или вы можете использовать gdb.debug ():
# Create a new process, and stop it at 'main'
io = gdb.debug('bash', '''
# Wait until we hit the main executable's entry point
break _start
continue
# Now set breakpoint on shared library routines
break malloc
break free
continue
''')
# Send a command to Bash
io.sendline("echo hello")
# Interact with the process
io.interactive()
Шаблон pwntools содержит код чтобы вы начали отладку с помощью gdb. Вы можете создать шаблон pwntools, запустив pwn template ./binary_name > template.py
. Затем вам нужно добавить аргумент GDB при запуске template.py для отладки: ./template.py GDB
.
Если вы получите [ERROR] Could not find a terminal binary to use.
, вам может потребоваться установить context.terminal
перед использованием gdb.
Если вы используете tmux, следующее автоматически откроет сеанс отладки gdb в новом горизонтально разделенном окне: context.terminal = ["tmux", "splitw", "-h"]
И чтобы разделить экран с новым окном сеанса gdb по вертикали: context.terminal = ["tmux", "splitw", "-v"]
(Чтобы использовать tmux, установите tmux на свой компьютер, а затем просто введите tmux
, чтобы запустить его. Затем введите python template.py GDB
.
Если ничего из вышеперечисленного не работает, тогда вы всегда можете просто запустить свой скрипт, использовать ps aux
, найти PID, а затем использовать gdb -p PID
для подключения к запущенному процессу.
Vim Explanation
Вам не нужно чтобы использовать vim для использования функций gdb pwntools, как это сделал парень в видео, которое вы связали, но вот объяснение того, что он сделал (vim также хороший инструмент, несмотря на это):
парень сначала выполнил следующую команду:
:!./%
:
входит в командный режим в vim !
выполняет команду оболочки %
is в основном это имя файла, который вы в настоящее время редактируете в vim
Итак, если бы ваш сценарий эксплойта был назван template.py, запуск :!./%
в vim был бы таким же, как запуск ./template.py
в вашем терминале . Это просто запускает эксплойт и переходит в интерактивный режим.
Это просто ярлык для выполнения вашего скрипта в vim.
Позже этот парень также использует :!./% GDB
для фактического запуска сеанса pwntools gdb. Это то же самое, что запустить python template.py GDB
.