gpt4 book ai didi

c - 为什么我的 setenv() 调用不起作用?

转载 作者:太空狗 更新时间:2023-10-29 15:27:03 59 4
gpt4 key购买 nike

我编写了以下 C 代码来将环境变量设置为 \x09。但是当我使用 echo $EGG | hexdump,我看到它将它设置为 00。只有当第一个半字节为零时才会出现此问题。知道哪里出了问题吗?

char shellcode[] = "\x09";

main() {
setenv("EGG", shellcode, 1);
system("/bin/bash");

return 0;
}

最佳答案

问题是字符 0x08, 0x09, 0x0a, 0x0b, 0x0c ... 被认为是空白字符并从变量值中删除。如果您尝试设置 0x01,它将在 shell 中可见。

附言看起来变量 is 设置为 \x09 但 shell 没有回显:确实:

prev_sh_$ ./so2 
$ export IFS=" \n"
$ echo $EGG | hexdump
0000000 0a09
0000002

0x0a (\n) 由 shell 添加以在下一行打印值。

关于c - 为什么我的 setenv() 调用不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912691/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com