您好,欢迎来到站长资源库!分享精神,快乐你我! 
  • 首 页
  • 站长交流
  • 留言求助
  • 当前位置:首页 > 申博开户 > discuz教程 >
    栈溢出产攻击
    时间:2019-09-19 21:06 来源:原创 作者:locoy 浏览:收藏 挑错 推荐 打印

      1. 什么是栈溢出产攻击

      ? ? ? ? 向缓冲器堵入度过多的数据,超越产疆界,招致数据外面溢。 同时使用缓冲器溢出产改写数据、改触动以次实行流动程。 实行shellcode。

      ? ? ?

      ? ?之因此会拥有缓冲区溢出产的能,首要是鉴于栈当空内管了函数的前往地址。该地址管了函数引用完一齐后后续实行的指令的位置,关于计算机装置然到来说,该信息是很敏感的。假设拥有人恶行意修改了此雕刻个前往地址,并使该前往地址指向了壹个新的代码位置,以次便能从其它位置持续实行。

      还愿上很多以次邑会接受用户的外面界输入,更是当函数内的壹个数组缓冲区接受用户输入的时分,壹旦以次代码不对输入的长度终止合法性反节的话,缓冲区溢出产便拥有能触发!譬如次头的壹个骈杂的函数。

      ?

      此雕刻个函数没拥有拥有做什么拥有“意思”的事情(此雕刻边首要是为了信募化效实),条是它是壹个典型的栈溢出产代码。在运用不装置然的strcpy库函数时,体系会己觉地将data的整顿个数据拷贝到buffer指向的内存放区域。buffer的长度是拥有限的,壹旦data的数据长度超越BUF_LEN,便会产生缓冲区溢出产。

      

      图?缓冲区溢出产

      ? ? ?

      ? ? ? ?鉴于栈是低地址标注的目的增长的,故此片断数组buffer的指针在缓冲区的下方。当把data的数据拷贝到buffer内时,超越缓冲区区域的下隐地址片断数据会“埋没拥有”原本的其他栈帧数据,根据埋没胸中拥有数据的情节不一,能会拥有产生以下情景:

      1、埋没拥有了其他的片断变量。假设被埋没拥局部片断变量是环境变量,这么能会改触动函数原本的实行流动程。此雕刻种方法却以用于破开松骈杂的绵软件验证。

      2、埋没拥有了ebp的值。修改了函数实行完一齐后要恢骈的栈指针,将会招致栈帧违反掉落顶消。

      3、埋没拥有了前往地址。此雕刻是栈溢出产规律的中心所在,经度过埋没拥局部方法修改函数的前往地址,使以次代码实行“不测”的流动程!

      4、埋没拥有参数变量。修改函数参数变量也能改触动以后函数的实行结实和流动程。

      5、埋没拥有部下函数的栈帧,情景与上述4点相像,条不外面影响的是部下函数的实行。天然此雕刻边的前提是保障函数能正新来往,即函数地址不能被恣意修改(此雕刻能很劳动驾!)。

      ? ? ? ? 假设在data本身的数据内就管了壹系列的指令的二进制码,壹旦栈溢出产修改了函数的前往地址,并将该地址指向此雕刻段二进制码的实则位置,这么就完成了根本的溢出产攻击行为。 (责任编辑:)