缓冲区溢出:VC++中利用/GS开关防止缓冲区溢出

  缓冲区溢出通常表现为个最为常见漏洞而存在于今天各种软件Software的中黑客可以用恶意输入从而更改执行流程由此入侵相应进程、电脑、或整个域如果进程运行于个高度受信账户的下如管理员或本地系统账户那么黑客带来破坏将是极其严重并有潜在广泛传播危险近几年来爆发些"知名"病毒如红色代码、冲击波、震荡波等等都源于C/C代码缓冲区溢出结果

  从角度来看缓冲区溢出只是个再简单不过编程--都是有关复制个内存区域内容到另个内存区域而目标内存区域容量太小无法容纳以下代码作了简单演示:

char* source = "A reasonably long ";
char dest[10];
::strcpy(dest, source);


  在本例中长度为25个(包括了空结束符)它对目标内存块来说无疑太大了而目标内存块声明在堆栈上;当此代码执行时将会破坏掉原有堆栈个访问违例而崩溃如果此源内存块由外部第 3方提供那么就有可能存在个漏洞它允许传入内存块以种特定方式修改堆栈

  当在C/C返回地址被存放在堆栈中因此在被执行完毕时执行流程能重新返回到原处如果个可能包含潜在缓冲区溢出返回地址可能会被修改而且执行流程将会跳到缓冲区数据中指定地方通过改变返回地址攻击者可获取进程中任意位置代码以执行般而言主要可以两种方式被利用:

  ·如果带有漏洞是已知、且容易访问到攻击者可查找某地址这通常会在所有进程例子处固定地址处被找到;并修改堆栈等着此

  ·要执行指令可作为缓冲区部分传递到进程地址空间攻击者利用此来完成攻击

  • 篇文章: 看黑客如何编写强力蓝屏炸弹

  • 篇文章: 服务级后门自己做
  • Tags:  mcafee缓冲区溢出 缓冲区溢出漏洞 缓冲区溢出攻击 缓冲区溢出

    延伸阅读

    最新评论

    发表评论