缓冲区溢出 - 格式字符串漏洞和利用

Buffer Overflow - Format String Vulnerability and Exploit

我正在 YouTube 上关注 tutorial 以了解缓冲区溢出漏洞。我能看到他的机器和我的机器之间的主要区别是他的地址由 8 个字节组成,而我的地址由 12 个字节组成。但是,我们的两个内存块似乎都是 8 个字节。

当他 运行 在 gdb 中使用他的 exploit 命令时,他使用
r $(python -c 'print "\xff\xff\xff\xff" + "%08x-" * 6 + "%s"')
其中 "\xff\xff\xff\xff" 是他的内存地址。

我运行我的命令使用
r $(python -c 'print "\xFF\xFF\xFF\xFF\xFF\xFF" + "%08x-" * 3 + "%s"')
其中 \xFF\xFF\xFF\xFF\xFF\xFF 是我的内存地址。 (我将他的 *6 更改为 *3 因为他的堆栈指针与他的内存地址相距 6 而我的相距 3)。

我已经尝试更改 "%08x" 值的数量以及将值更改为 %x012 以及 %x12.

是否有处理 12 字节地址的特定方法,或者此漏洞是否存在于 12 字节地址中? ASLS 已禁用。

很可能你将程序编译为 64 位,而老师将他的程序编译为 32 位。

缓冲区溢出在 64 位模式下的工作方式不同。有不同的事情需要考虑。如果您想先了解基础知识,建议编译为 32 位并尝试这种方式。