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

Gdb 缓冲区溢出-格式字符串漏洞和利用漏洞,gdb,cpu-architecture,buffer-overflow,cybersecurity,Gdb,Cpu Architecture,Buffer Overflow,Cybersecurity,我正在关注YouTube上的一篇文章,以了解缓冲区溢出漏洞。我能看到他的机器和我的机器之间的主要区别是,他的地址由8字节组成,而我的地址由12字节组成。然而,我们的两个内存块似乎都是8字节 当他在gdb内部运行他的剥削命令时,他使用 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”+%08

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

当他在gdb内部运行他的剥削命令时,他使用
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位并尝试这种方式。

您是指12个十六进制数字吗?这是6字节,48位。可能实际上是64位的,但是有高零,就像x86-64标准地址的正常情况一样。我会这样做,也许我会在将来以64位返回到它。转换为64位时,主要考虑哪些因素?