PWN入门系列(2)
栈溢出
栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变(覆盖)。是一种特定的缓冲区溢出漏洞,类似的还有heap、bss溢出等。其前提是:
·
- 程序必须向栈上写入数据
- 程序对某个函数或者某个模块的输入数据的大小没有控制得当。
基本示例
举个简单的例子:
#include <stdio.h>
#include <string.h>
void success() {
puts("You Hava already learned it "); }
void vulnerable() {
char s[12];
gets(s);
puts(s);
return;
}
int main(int argc, char **argv) {
vulnerable();
return 0