缓冲区溢出漏洞简介 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    缓冲区溢出是一种高级的攻击手段,通过对缓冲区写超长度内容从而造成溢出,

缓冲区溢出漏洞简介

。破坏程序堆栈使程序执行其他命令,从而达到制造ROOT权限的目的,不过只有将溢出送到能够以ROOT权限运行命令的区域才能见效果,哈哈哈.缓冲区利用程序将能运行的指令放在了能运行ROOT权限的内存中,从而一旦运行这些指令,我们就以ROOT权限控制了计算机。

    给个例子看看:

    [root@redhat] # cat example0.c

    /*将examplel.c文件内容输出*/

    Void function (char* str) {

    Char(buffer,str);

    }

    上面的ftrcpg ( ) 直接将str 的内容复制到缓冲区中。这样只要str 的长度大于16 ,就会造成缓冲区的溢出,使程序出错。

    在相似 strcpg 的问题的标准函数还有 strcat ( ) \ sprintf (). 以及在循环内的:getc ( ) fgetc ( )

    Getchar( ) 还有 在这里就不多说了。

    缓冲溢出就是在缓冲区写入过多的数据,我们来看下面的:

    [root@redhat root] # cat example2.c

    Void function (char* str) {

    Char buffer,str [16]

    strcpy (buffer,str);

    }

    Void main ( ) {

    Char large_string[256]

    Int I ;

    Forci=0; I<225; i++)

    Lrge_string[i] ‘A’ ;

    Function(large_string);

    }

    哈哈哈这个吗就是一个缓冲区溢出编码错误,函数将一个字符串不经过边界检查,复制到另一内存区域,

电脑资料

缓冲区溢出漏洞简介》(https://www.unjs.com)。程序的执行结果就成为了“segme ntation fault(core dumped)”或类似的出错信息:因为从buffer 开始的256个字节都将被*str 的内容A覆盖,包括sft , ret 甚至 *str。A的十六进值是 0x41 ,所以函数的返回地址变成了0x41414141,这超出了地址空间,所以出现段错误。缓冲区溢出允许我们改变一个函数的返回地址。哈哈哈哈 只要我们知道这种方式就可以改变程序的执行顺序。了解了这个原理,只要我们费心构造一些可执行代码,便可轻松的得到系统的shello . <不过遗憾的是还要麻烦我们精确的计算出相关的EBP 和 EIP>。

    在最后我想咨询一下,有关《格式化漏洞》的信息。有原理和示例更欢迎 。请不要说我有点自私阿哈哈哈。

    为了发掘大家的潜力我在这里介绍一下格式化漏洞的优点:

    我们可以利用程序覆盖上面所提到的 main ( ) 的返回地址。利用prin tf ( ) 函数的格式化字符串漏洞:我们可以任意读取和写入数据,哈哈哈不用说了 如果我们想执行有效的shell

    就不是什么问题了。

    本帖属于黑基原创

最新文章