微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我听说过缓冲区溢出很多,并且相信我理解了这个问题,但我仍然没有看到一个说法的例子
char buffer[16];

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

解决方法

首先,您需要一个可以启动其他程序的程序.以某种形式或其他形式执行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.jb51.cc/c/117493.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐