gpt4 book ai didi

c - 警告 : command substitution: ignored null byte in input. 如何让 gdb 不忽略输入中的空字节?

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:56 25 4
gpt4 key购买 nike

我的缓冲区溢出赋值有这段代码:

int zerg(char *arg)
{
char buf[12];
static int i, sum;

if (strlen (arg) > 24) /* Argument too long! */
{
printf ("String too long!\n");
return -1;
}

这就是我将其用作输入的原因:

run "$(python -c "print 'RUSHKEKEKEzAS\00\xa9\x87\x04\x08'")"

但是 gdb 忽略空字节作为输入并出现上述错误。我怎样才能通过这个?

最佳答案

不可能将 NUL 字节放入命令行参数,因为参数以第一个 NUL 字节结束。当 execve()argv 数组复制到新创建的内存空间以供进程运行时,它只复制第一个 NUL 字节。

由于 shell 的存在基本上是为了将命令行参数提供给命令行实用程序,因此它们不需要处理嵌入的 NUL 字节,而且大多数都不需要。特别是 Bash,它会丢弃在命令替换期间遇到的任何 NUL 字节。其他 shell 可能会在第一个 NUL 字节处终止参数; Posix 标准未指定该行为。

由于 gdb 基本上是为模仿 bash 而设计的,因此它遵循相同的规则,如该警告消息所示。

关于c - 警告 : command substitution: ignored null byte in input. 如何让 gdb 不忽略输入中的空字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52626587/

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