当前位置: 首页 > 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;
}

相关文章:

  • 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)
  • 重庆荣昌区委区政府再设“答谢宴”,邀请800余名志愿者机关食堂用餐
  • 上汽享道出行完成13亿元C轮融资,已启动港股IPO计划
  • 印巴战火LIVE丨印巴互相发动无人机袭击,巴官员称两国已在国安层面接触
  • 李彦宏:技术迭代速度之快从业30年来未见过,要提升执行力战胜对手
  • 中科院院士魏辅文已卸任江西农业大学校长
  • 高进华“控股”后首份年报出炉,史丹利账上可动资金大幅缩水