首页 > 其他 > 详细

pwn-简单栈溢出

时间:2019-11-08 13:51:34      阅读:87      评论:0      收藏:0      [点我收藏+]

因为调用子函数之前会保存返回地址和ebp以及传参

顺序从小地址到大地址依次是ebp,retuen_addr,参数i,...

32位和64位传参方式不相同 

32位直接把所有参数接在retuen_addr后面

64位先依次放入rdi, rsi, rdx, rcx, r8, r9,如果还有多余的参数才接到retuen_addr后面

一般来说得到溢出点的偏移距离有两个方法

第一:IDA F5后每个变量都提供了相对ebp,esp的偏移地址

技术分享图片

 

第二:读入函数调用前需要用到读入的首地址,那么就一定放进某个寄存器里,根据目前地址和ebp可以计算出偏移地址

技术分享图片

 

之后先覆盖ebp,再覆盖retuen_addr就可以改变程序的运行方向了

 

pwn-简单栈溢出

原文:https://www.cnblogs.com/lxy8584099/p/11819296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!