首页 > 解决方案 > 您将如何更改具有缓冲区溢出的全局变量?

问题描述

所以我有这段易受攻击的代码,我试图在其中打印出来Come on in.。下面是提到的代码。

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int user_age;
void secretClub(){
  if(user_age<18){
    printf("Come back when your old enough!!");
  }
  else{
    printf("Come on in.");
}
}

int main(){
  char name[30];
  user_age = 17;
  gets(name);
  printf("Hello there ");
  printf(name);
}

现在,我知道由于从未调用过函数 secretClub,我需要将缓冲区名称溢出,以便返回地址指向 secretClub 的地址。我也知道 main 中的 printf 中存在一个格式字符串漏洞,可以利用它来更改变量 user_age。

我正在努力看看你如何将这一切拼凑在一起。是否有可能在这里使用格式字符串攻击实际上是多余的,您可以使用缓冲区溢出重定向,以便打印出“Come on in.”?

我是新手,仍在学习,我非常感谢任何形式的指导。谢谢!

标签: cstack-overflowbuffer-overflowformat-string

解决方案


推荐阅读