我正在尝试缓冲区溢出,我遇到了这个错误。有没有办法阻止bash忽略空字节? (注入shellcode)。 谷歌搜索对我帮助不大。
代码
`
if(argc==1) {
printf("Usage: %s input\n",argv[0]);
exit(0);
}
strcpy(buf,argv[1]);
printf("%s\n",buf);
return 0;
`
答案 0 :(得分:4)
Bash变量存储为C字符串。 C字符串是NUL终止的。因此,他们无法按照定义存储NUL 。
考虑将每个NUL分隔的组件存储为数组的单独元素。例如:
pieces=( a '' bc d ); tail='efg'
printf '%s\0' "${pieces[@]}"; printf '%s' "$tail"
...将发出a\0\0bc\0d\0efg
,并使用文字NUL代替每个\0
。