【发布时间】:2020-09-27 13:15:41
【问题描述】:
如何在设置环境变量的情况下运行 gdb,如下例所示?
gdb (env -i SHELLCODE="`cat ~/shellcode.bin`" ./vulnerable)
【问题讨论】:
标签: c linux linux-kernel gdb shellcode
如何在设置环境变量的情况下运行 gdb,如下例所示?
gdb (env -i SHELLCODE="`cat ~/shellcode.bin`" ./vulnerable)
【问题讨论】:
标签: c linux linux-kernel gdb shellcode
一般情况下,您可以在启动要调试的程序之前使用set environment command:
set environment MYVAR abc
但是,从您的问题来看,您似乎想从文件中获取环境变量的内容,而 GDB shell 无法做到这一点。但是,您可以使用已设置的变量启动 GDB,并且在启动程序进行调试时将保留该变量。您可以使用show environment 命令验证这一点。
$ MYVAR="$(cat x.txt)" gdb ./vulnerable
或:
$ export MYVAR="$(cat x.txt)"
$ gdb ./vulnerable
甚至使用env:
$ env -i MYVAR="$(cat x.txt)" gdb ./vulnerable
然后:
(gdb) show environment MYVAR
MYVAR=...
(gdb) run
您可能需要检查您的 shellcode 是否不包含 \x00 字节,因为这可能会导致一些问题(不是 100% 确定,因为我没有测试它)。
【讨论】:
set env MYVAR=abc 设置一个名为 MYVAR=abc 的变量。您想要set env MYVAR abc 或(等效)set env MYVAR = abc(= 符号周围有空格)。