首页 > 解决方案 > 如何在 GDB 下运行将环境变量设置为文件内容的程序?

问题描述

如何在设置环境变量的情况下运行 gdb,如下例所示?

gdb (env -i SHELLCODE="`cat ~/shellcode.bin`" ./vulnerable)

标签: clinuxlinux-kernelgdbshellcode

解决方案


一般来说,您可以在启动要调试的程序之前使用该set environment命令:

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% 肯定,因为我没有测试它)。


推荐阅读