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

栈溢出攻击最基本原理

函数在调用的过程中,函数在调用之前呢,会将调用完这个函数之后的下一条命令的地址保存到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.dtcms.com/a/182412.html

相关文章:

  • MySQL 1366 - Incorrect string value:错误
  • 采用SqlSugarClient创建数据库实例引发的异步调用问题
  • 动态规划:最长递增子序列
  • Python企业级OCR实战开发:从基础识别到智能应用
  • JMeter 中实现 双 WebSocket(双WS)连接
  • 前端EXCEL插件,智表ZCELL产品V3.0 版本发布,底层采用canvas全部重构,功能大幅扩展,性能极致提升,满足千万级单元格加载
  • openlayers利用已知的三个经纬度的坐标点 , 绘制一个贝塞尔曲线
  • JDBC执行sql过程
  • Unity.UGUI DrawCall合批笔记
  • onGAU:简化的生成式 AI UI界面,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。
  • 移动零--双指针
  • 【Java ee初阶】网络原理
  • P1725 琪露诺
  • 代码随想录第41天:图论2(岛屿系列)
  • PPT图表怎么制作?说5款自己使用过的PPT图表制作工具
  • 遗传算法组卷系统实现(Java版)
  • Web 架构之容灾方案深度解析
  • ThinkPad T440P如何从U盘安装Ubuntu24.04系统
  • Cadence学习笔记之---导入PCB板框、网表
  • 贪心算法专题(Part2)
  • 简述Web和HTTP
  • 机器学习 day02
  • 【OpenCV】imread函数的简单分析
  • 计算机网络基础科普
  • 学习黑客了解Python3的“HTTPServer“
  • 社区商城分销合作合规承诺书
  • MacOS 用brew 安装、配置、启动Redis
  • Jsp技术入门指南【十二】自定义标签
  • Laravel 安全:批量赋值 fillable 与 guarded
  • leetcode-hot-100(哈希)