当前位置: 首页 > ds >正文

栈溢出攻击最基本原理

函数在调用的过程中,函数在调用之前呢,会将调用完这个函数之后的下一条命令的地址保存到LR中。

void func()
{int a[4];a[6] = 100;
}

这个函数在用gcc编译的时候是不会报错的,所以我们可以在尝试之后,修改LR的值,让代码返回到一个我们自己的函数中。

void shellcode()
{while(1);
}
void func()
{int a[4];a[6] = shellcode;
}

比较新的gcc编译器,会在边界几个位置中,设定一个随机值,程序执行完看那个随机值有没有变化,如果说变化了,就说明那个你越界访问了。但也是只限周围的几个(左右一两个)。

 

这里再分享一道笔试题,nice公司的一道笔试题:下面这段代码的执行结果是什么?似乎是相同的道理。

#include <stdio.h>
int main()
{int i = 0;int arr[] = {1,2,3,4,5,6,7,8,9,10};for(i=0; i<=12; i++){arr[i] = 0;printf("nice\n");}return 0;
}
http://www.xdnf.cn/news/5307.html

相关文章:

  • 宝塔服务安装使用的保姆级教程
  • Redis 集群
  • 安装或更新 CUDA Toolkit - Ubuntu - RuntimeError
  • CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
  • WPF中如何自定义控件
  • 【Oracle认证】MySQL 8.0 OCP 认证考试英文版(MySQL30 周年版)
  • #Redis黑马点评#(四)优惠券秒杀
  • Fabric系列 - SoftHSM 软件模拟HSM
  • 前端SSE技术详解:从入门到实战的完整指南
  • C++泛型编程(二):现代C++特性
  • 常见的降维算法
  • 采用SqlSugarClient创建数据库实例引发的异步调用问题
  • 【Qt/C++】深入理解 Lambda 表达式与 `mutable` 关键字的使用
  • MySQL的视图
  • AI 助力,轻松进行双语学术论文翻译!
  • C++GO语言微服务之gorm框架操作MySQL
  • uniapp使用ui.request 请求流式输出
  • LLaVA:开源多模态大语言模型深度解析
  • 物品识别 树莓派4 YOLO v11
  • 青少年编程与数学 02-019 Rust 编程基础 05课题、复合数据类型
  • 解锁 DevOps 新境界 :使用 Flux 进行 GitOps 现场演示 – 自动化您的 Kubernetes 部署
  • 大模型(LLMs)强化学习——RLHF及其变种
  • 基于强化学习 Q-learning 算法求解城市场景下无人机三维路径规划研究,提供完整MATLAB代码
  • linux测试硬盘读写速度
  • uniapp|实现商品分类与列表数据联动,左侧菜单右侧商品列表(瀑布流、高度自动计算、多端兼容)
  • 音频类网站或者资讯总结
  • 电子电器架构 --- 车载以太网拓扑
  • OSPF的四种特殊区域(Stub、Totally Stub、NSSA、Totally NSSA)详解
  • PyTorch 线性回归模型构建与神经网络基础要点解析
  • 数据结构精解:优先队列、哈希表与树结构