c – 你能给出一个缓冲区溢出的例子吗?

前端之家收集整理的这篇文章主要介绍了c – 你能给出一个缓冲区溢出的例子吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我听说过缓冲区溢出很多,并且相信我理解了这个问题,但我仍然没有看到一个说法的例子
char buffer[16];

//code that will over write that buffer and launch notepad.exe

@R_301_323@

首先,您需要一个可以启动其他程序的程序.以某种形式或其他形式执行OS exec的程序.这是高度操作系统和语言特定的.

其次,启动其他程序的程序必须从一些外部源读取到缓冲区.

第三,然后必须检查正在运行的程序 – 由编译器在内存中布局 – 以查看输入缓冲区和用于步骤1(启动其他程序)的其他变量是如何存在的.

第四,你必须编写一个实际超出缓冲区并设置其他变量的输入.

所以.第1部分和第2部分是一个在C中看起来像这样的程序.

#include <someOSstuff>
char buffer[16];
char *program_to_run= "something.exe";
void main( char *args[] ) {
    gets( buffer );
    exec( program_to_run );
}

第3部分需要对缓冲区和program_to_run的外观进行一些分析,但你会发现它可能只是

\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 s o m e t h i n g . e x e \x00

第4部分,你的输入,然后必须

1234567890123456notepad.exe\x00

所以它将填充缓冲区并写入program_to_run.

原文链接:https://www.f2er.com/c/117493.html

猜你在找的C&C++相关文章