[英]warning: command substitution: ignored null byte in input. How can I make gdb not ignore the null byte in the input?
我有的缓冲区溢出分配具有以下代码:
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的,因此它遵循相同的规则,如该警告消息所示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.