[英]Buffer Overflow
我正在尝试创建缓冲区溢出。 一个函数中有三个变量——一个 int 和两个数组。 这两个数组的长度均为 14 个字符。 int 在函数中初始化为 0,但我试图将其更改为 1。我从终端运行程序并输入一些输入以分配给第二个数组。
因此,当我运行程序时,我正在做这样的事情:
./a.out 11111111111111111111111111111
这是 29 个 1。 所以这会溢出两个数组,使它们都只是 1,我想将第 29 个“1”放入 int,但由于某种原因,它被转换为十进制数,即“49”。 我如何能够在不转换的情况下使用缓冲区溢出将“1”放入该 int 中?
我无法输入 1 的十进制版本,因为它在 ascii 中是不可打印的字符。
字符1
的 ASCII 值为0x31
,十进制为49
。 你走在正确的轨道上。
无论如何,您正在做的事情会调用未定义的行为,但预期的行为是未定义行为的一种形式。
要尝试将整数更改为1
,您可以运行
./a.out 1111111111111111111111111111^A
其中^A
是通过按下control和A键获得的,但 shell 的行编辑器通常会将其解释为将光标移动到行首的命令......所以你可以试试这个:
./a.out $(printf '1111111111111111111111111111\001')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.