如何防止GDB有不同的地址不能正常运行

问题描述 投票:0回答:0

我想从二进制文件(根 setuid)运行 shellcode。问题是当我使用 gdb 运行二进制文件时,代码跳转到堆栈以执行堆栈中的指令并执行 shell。但是,从 gdb 调用的 shell 没有以 root 身份运行,这就是问题所在(这是一个练习,所以我不能对 gdb 使用 sudo)。

我试图通过从命令行运行代码来绕过它,但它不起作用。我相信这是因为当我从命令行运行它时地址已经改变了。我禁用了地址空间随机化并从 GDB 中删除了 LINES 和 COLUMN 环境变量,但它仍然无法正常工作。我在 stackoverflow 中看到了很多主题,其中任何一个都对我有帮助。

二进制执行 2 个“获取”调用,我使用以下方式调用它:

echo -e "bunchOfA-adress_to_vuln_function-return_adress_changed_to_the_buff-param1-param2\nshellcode" | ./code

当我在这个二进制文件上运行 GDB 时,我会:

gdb code
unset env LINES
unset env COLUMNS
run < <(echo -e "bunchOfA-adress_to_vuln_function-return_adress_changed_to_the_buff-param1-param2\nshellcode")

PS: 在这里停止将 char 提供给第一个 buff 并将 shellcode 提供给第二个缓冲区。 (第一个缓冲区太小放不下shellcode)

gdb buffer-overflow
© www.soinside.com 2019 - 2024. All rights reserved.