无法使用缓冲区溢出修改 RIP 寄存器

Cannot modify RIP register with Buffer Overflow

提问人:Gokalp 提问时间:11/12/2023 最后编辑:Gokalp 更新时间:11/12/2023 访问量:30

问:

我正在尝试溢出大小为 32 的缓冲区 ( buffer[32] )。每当我尝试控制“rip”寄存器时,那里都有一个“a”字符。例如:

当我键入 32xA + 8xB + 3xC (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBCCC) 时,我得到以下输出:
Output1

此外,当我键入 32xA + 8xB + 5xC (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBCCCCC) 时,我得到以下输出:
Output2

如果我添加一个 C,地址就会完全改变。这两个输出在“C”(43)之前都有一个“a”字符。

我怎样才能摆脱那个“a”以控制撕裂?

编辑:当我使用^D终止输入时,它起作用了,地址中没有“a”。

程序集 x86-64 缓冲区溢出

评论

2赞 prl 11/12/2023
我假设您正在键入放置在缓冲区中的输入。0x0a是在输入末尾键入的换行符。
3赞 prl 11/12/2023
如果可以修改测试程序,则可以对其进行更改,以将尾部换行符替换为 null 字符。如果您使用的是 Unix 类型的系统,则可以使用 ^D 而不是 Enter 来终止输入行。
4赞 fuz 11/12/2023
请不要发布文字图片。而是将文本作为文本发布。
1赞 Paweł Łukasik 11/12/2023
echo -en也用于此类情况

答: 暂无答案