【发布时间】:2021-01-17 18:10:15
【问题描述】:
我正在学习 x86 Linux 上的基于堆栈的缓冲区溢出。 用某个值覆盖GDB中的EIP后如何计算堆栈空间的大小?
(gdb) info registers
eax 0x1 1
ecx 0xffffd7a0 -10336
edx 0xffffd17b -11909
ebx 0xff5f8948 -10516152
esp 0xffffd180 0xffffd180
ebp 0x80ad26dc 0x80ad26dc
esi 0xf7fc2000 -134471680
edi 0x0 0
eip 0x66666666 0x66666666
eflags 0x10282 [ SF IF RF ]
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x0 0
gs 0x63 99
(gdb) info frame
Stack level 0, frame at 0xffffd184:
eip = 0x66666666; saved eip = 0xffffd300
called by frame at 0x80ad26e4
Arglist at 0xffffd17c, args:
Locals at 0xffffd17c, Previous frame's sp is 0xffffd184
Saved registers:
eip at 0xffffd180
(gdb) info stack
#0 0x66666666 in ?? ()
#1 0xffffd300 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
编辑:感谢您的回答,GDB 中为这个问题提供正确答案的确切命令是 info proc
(gdb) info proc all
【问题讨论】:
标签: security assembly gdb buffer-overflow