32位ELF文件
程序源码:溢出点在gets函数
pwndbg调试
(1)在main函数处下断点
b main
(2)下完断点后输入r运行程序:
r
(3)cyclic 生成字符串:
cyclic 200
(4)复制字符串,输入c继续运行程序,溢出点在gets,所以在第二次输入的时候粘贴字符串
c
(5)程序崩溃,指向无效地址
(6)cyclic -l 无效地址(计算出偏移量)
cyclic -l 0x62616164
hex 112
IDA-stack of function
(1)双击S变量进入stack of function窗口
(2)计算偏移
64位ELF文件
程序源码:
pwndbg调试
程序崩溃之前的操作跟32位程序一致
1.发现程序崩溃并不会像32位一样EIP指向无效地址
2.此时我们可以通过找rbp或者rsp的地址来计算偏移
(1)通过找RBP(此偏移到RBP,padding=16+8=24)
x $rbp
cyclic -l 0x6161616161616163
(2)通过找RSP(此偏移到retaddr,padding=24)
x $rsp
x/16gx 0x7fffffffddb8
cyclic -l 0x6161616161616164
hex 24
IDA-stack of function
(1)双击变量v1,进入stack of function窗口
(2)计算padding