【发布时间】:2020-11-23 15:25:29
【问题描述】:
我在 YouTube 上关注 tutorial 以了解缓冲区溢出漏洞。我可以看到他的机器和我的机器之间的主要区别是他的地址由 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 已禁用。
【问题讨论】:
-
你的意思是 12 位十六进制数字吗?那是 6 个字节,48 位。可能实际上是 64 位,但带有高位零,就像 x86-64 规范地址一样。
标签: gdb cpu-architecture buffer-overflow security