加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows上的缓冲区溢出攻击导致访问冲突

发布时间:2020-12-14 02:07:41 所属栏目:Windows 来源:网络整理
导读:我刚刚开始研究 buffer overflow攻击是如何工作的,并尝试使用Visual C 2010模拟对Windows 7的攻击.缓冲区溢出攻击是非常人为的,它只是将返回地址覆盖到“缓冲区”局部变量的地址.缓冲区包含shellcode字符串. 无论我是否在Visual Studio 2010 Debug中运行程序
我刚刚开始研究 buffer overflow攻击是如何工作的,并尝试使用Visual C 2010模拟对Windows 7的攻击.缓冲区溢出攻击是非常人为的,它只是将返回地址覆盖到“缓冲区”局部变量的地址.缓冲区包含shellcode字符串.

无论我是否在Visual Studio 2010 Debug中运行程序,程序都会跳转到shellcode并几乎开始执行它,但是我遇到了Access Violation错误,程序将不会继续执行shellcode.

为什么我收到此错误?这是否可以防止Windows中的缓冲区溢出?

你如何让程序在缓冲区中执行shellcode?

编辑:

汉斯(回答)是对的.这在Windows Internals 5th的安全章节中讨论,错误的原因是Microsoft的Executable Space Protection实现.

如果这个问题对任何人都有帮助,那么任何赞成票都会受到赞赏

void execute_my_shellcode()
{
    char buffer[24];
    memcpy(buffer,"x6Ax21xFFx15x40x62x40x00x83xC4x04x6Ax0AxFFx15x40x62x40x00x83xC4x04xC3",24); 
    printf("current return address: %pn",*(int*)((char*)&buffer + 24 + 4));   
    *(int*)((char*)&buffer + 24 + 4) = (int)&buffer; 
    printf("return address is now : %pnn",(int*)*(int*)((char*)&buffer + 24 + 4) );
}

解决方法

这可能在10年前就有效了.这些明显的安全漏洞已被修补,现在处理器支持的 no-execute bit是对策之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读