栈溢出保护测试(非GS保护机制)

本文介绍了一个栈溢出实验的过程,通过利用strcpy函数的漏洞来弹出对话框。详细展示了如何通过构造特定的字符串来覆盖返回地址,进而劫持进程,并探讨了在VS2010环境下避免被栈溢出检测机制拦截的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天做了一个栈溢出实验,主要目的是弹出一个对话框。还是用老办法,利用strcpy拷贝字符串时的漏洞,输入较长的字符串产生溢出,覆盖返回地址,从而劫持进程。

产生对话框部分字符串的是:33DB5368 7765737468 6661696C68 6661696C8BC453505053B8 71EAD677FFD0

对应汇编是:

33DB                 xor ebx,ebx
53                       push ebx
68 77657374      push 74736577
68 6661696C      push 6C696166
8BC4                   mov eax,esp
53                       push ebx
50                       push eax
50                       push eax
53                       push ebx
B8 71EAD677      mov eax,77D6EA71//自己机子的
FFD0                    call eax

我用的环境是Visual Stdio 2010,关闭GS栈溢出保护,DEP执行数据保和随机基址。但是运行时,进程还是检测到栈溢出,提示错误,结束进程。跟踪进程发现,进程还有一个检测栈溢出的机制。

当一个函数里面有调用strcpy函数时,在本函数准备返回时,在检测返回地址EBP-0x6处的数据dat与0xCCCCCCCC,进行比较,即cmp dat,CCCCCCCC,如果相等会ZF=0,溢出栈破坏了。

转载于:https://www.cnblogs.com/xts10/archive/2013/03/26/2983000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值