c - 您将如何更改具有缓冲区溢出的全局变量?
问题描述
所以我有这段易受攻击的代码,我试图在其中打印出来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.”?
我是新手,仍在学习,我非常感谢任何形式的指导。谢谢!
解决方案
推荐阅读
- dns - Name.com 裸域到 www
- php - Tenancy - 无法声明类 CreateUsersTable,因为该名称已在使用中
- reactjs - Next.js / React 单页应用程序需要每个项目的 url
- javascript - 如何从函数返回与传递给函数的数量一样多的元素(html标签)?反应
- python - Python打印与输入重叠
- kubernetes - 为什么这么多流行的 Helm 图表的安全等级很低?有关系吗?
- python - Odoo13 - PDF 打印的差异 - 丢失页码
- .net-core - 无法将 github 操作成功添加到 azure 应用服务
- javascript - 如何使用 selectsize.js 制作分隔符?
- java - 使用 Spring Boot 在每个 Cucumber 场景后回滚事务