Linux x86 栈溢出

环境:
1.系统kali linux x64
2.开发环境c语言
工具:
1.Gcc
2.Python
3.Pwntools
4.gdb
无防护下的栈溢出
1.漏洞程序源代码
//Flow.c 源代码
这里写图片描述
2.编译并关闭dep和栈保护
gcc -fno-stack-protector -z execsatck -m32 -o stack1 Flow.c
这里写图片描述
3.关闭ASLR
运行./close_aslr.sh
4.先生成一个字符串(使用pattern.py)
这里写图片描述
5.运行stack1,输入刚才生成的字符串,栈崩溃了
这里写图片描述
6.gdb调试
这里写图片描述
7. 计算偏移位置
这里写图片描述
8.重新生成长度为140的字符串再加上四个‘B’再次使用gdb调试可以看到崩溃的地址是0x42424242这正是“BBBB”的ASCII值
这里写图片描述
9.查看缓冲区开始的地址
x/20x esp144x/20s esp-144 可以得到缓冲区的开始位置
这里写图片描述
10.实际上这些地址都是gdb的调试地址,实际程序运行的地址并不是这些,实际的地址可以通过调试core获取,linux下默认是关闭的,可以通过ulimit -c查看,返回0即为关闭可以通过ulimit -c unlimited 设置成无限大小(仅限本终端),(永久生效在/etc/profile中写入 source 立即失效)
在设置一下core生成的位置echo ‘/core/core_%e_%p’> /proc/sys/kernel/core_pattern
(路径必须存在)
11.再次运行stack1,输入140*‘A’+4*‘B’可以看到生成了core dump
这里写图片描述
12.运行gdb 调试附加stack1和生成的core文件,可以看到断在0x42424242也就是BBBB
这里写图片描述
13.查看一下缓冲区的开始地址为0xffffccd0(不同机子可能不一样)
这里写图片描述
14.找一个shellcode
这里写图片描述
15.运行一个看一下效果,拿下shell
这里写图片描述

总结:
这是在没有防护下的栈溢出,在防护下怎绕过,将在下次带给大家!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值