栈溢出中偏移的测量

本文详细描述了如何使用pwndbg工具对32位和64位ELF文件进行调试,针对gets函数引发的栈溢出,通过设置断点、生成字符串和计算偏移量,最终在IDA-stackoffunction中确定漏洞位置。
摘要由CSDN通过智能技术生成

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

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值