如何定位溢出点位置

程序:

#include <stdio.h>
void exploit()
{
    system("/bin/sh");
}
void func()
{
	char str[20];
	read(0,str,50);
        printf("the str is:%s\n",str);
}
int main()
{
	func();
	return 0;
}

关掉保护机制:

gcc -no-pie -fno-stack-protector -z execstack -m32 -o 3.exe 3.c

检查一下:

checksec 3.exe
0x01 kali自带
msf-pattern_create -l 100

创建长度为100的字符串
在这里插入图片描述
运行我们的程序:

start

一直下一步,直到需要填入参数:
在这里插入图片描述
这个时候程序报错了,表示有溢出了
在这里插入图片描述
我们来看看eip的值,0Ab1,表示溢出使返回的地址是这个
在这里插入图片描述
使用命令,查看在哪里溢出了

msf-pattern_offset -q 0Ab1

在这里插入图片描述
32位,我们可以修改从32位开始的数据,让程序跳转到我们指定的地址执行

0x02 peda
pattern create 100

生成长度为100字符串
在这里插入图片描述
使用命令r,让程序继续执行,复制我们生成的字符串,注意单引号不要复制
在这里插入图片描述
溢出了,查看现在的EIP,A)AA
使用命令查看溢出位置

pattern offset A)AA

在这里插入图片描述
32位

0x03 pwndbg插件
cyclic 100

生成长度为100的字符串,按照上面的顺序,得到溢出eip的值为iaaa
查找溢出位置:

cyclic -l iaaa

32位

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值