西工大网络空间安全学院计算机系统基础实验二(phase_2下——漫漫深夜过后的黎明!!!)

内存地址内存地址中的数注释指向这块内存的寄存器
0xffffd0e8函数phase_2的栈帧
0xffffd0e40xffffd0f4函数phase_2的栈帧
0xffffd0e00x5655b7b0函数phase_2的栈帧
0xffffd0dc0x565566ca函数read_six_numbers的返回地址,函数phase_2的栈帧
0xffffd0d80x5655af64旧%ebx的值
0xffffd0d4
0xffffd0d0
0xffffd0cc0xffffd108第<read_six_numbers+26>行 push %edx
0xffffd0c80xffffd104第<read_six_numbers+30>行 push %edx
0xffffd0c40xffffd100第<read_six_numbers+34>行 push %edx
0xffffd0c0

0xffffd0fc

第<read_six_numbers+38>行 push %edx
0xffffd0bc0xffffd0f8第<read_six_numbers+42>行 push %edx
0xffffd0b80xffffd0f4第<read_six_numbers+43>行 push %eax
0xffffd0b40x565583c10x565583c1是字符串'%d %d %d %d %d %d'的地址%esp

图1:实际运行与纸上分析——使用"ni"命令执行第<read_six_numbers+50>行汇编代码之后各寄存器与栈帧的情况

是不是有点小激动了呀哈哈哈,耐住性子千万不要着急,一步一步慢慢来哦!

内存地址内存地址中的数注释指向这块内存的寄存器
0xffffd0e8函数phase_2的栈帧
0xffffd0e40xffffd0f4函数phase_2的栈帧
0xffffd0e00x5655b7b0函数read_six_numbers的第一个入口参数,函数phase_2的栈帧
0xffffd0dc0x565566ca函数read_six_numbers的返回地址,函数phase_2的栈帧
0xffffd0d80x5655af64旧%ebx的值
0xffffd0d4
0xffffd0d0
0xffffd0cc0xffffd108第<read_six_numbers+26>行 push %edx
0xffffd0c80xffffd104第<read_six_numbers+30>行 push %edx
0xffffd0c40xffffd100第<read_six_numbers+34>行 push %edx
0xffffd0c0

0xffffd0fc

第<read_six_numbers+38>行 push %edx
0xffffd0bc0xffffd0f8第<read_six_numbers+42>行 push %edx
0xffffd0b80xffffd0f4第<read_six_numbers+43>行 push %eax
0xffffd0b40x565583c10x565583c1是字符串'%d %d %d %d %d %d'的地址
0xffffd0b00x5655b7b00x5655b7b0是你输入的针对'phase_2'的字符串的地址%esp

图2:实际运行与纸上分析——使用"ni"命令执行第<read_six_numbers+51>行汇编代码之后各寄存器与栈帧的情况

内存地址内存地址中的数注释指向这块内存的寄存器
0xffffd0e8函数phase_2的栈帧
0xffffd0e40xffffd0f4函数phase_2的栈帧
0xffffd0e00x5655b7b0函数read_six_numbers的第一个入口参数,函数phase_2的栈帧
0xffffd0dc0x565566ca函数read_six_numbers的返回地址,函数phase_2的栈帧
0xffffd0d80x5655af64旧%ebx的值
0xffffd0d4
0xffffd0d0
0xffffd0cc0xffffd1080x6
0xffffd0c80xffffd1040x5
0xffffd0c40xffffd1000x4
0xffffd0c0

0xffffd0fc

0x3
0xffffd0bc0xffffd0f80x2
0xffffd0b80xffffd0f40x1
0xffffd0b40x565583c10x565583c1是字符串'%d %d %d %d %d %d'的地址
0xffffd0b00x5655b7b00x5655b7b0是你输入的针对'phase_2'的字符串的地址%esp

图3:实际运行与纸上分析——使用"ni"命令执行第<read_six_numbers+55>行汇编代码之后各寄存器与栈帧的情。这时是不是觉得<__isoc99_sscanf@plt>非常神奇!!!在这一步过后,我们的思路便豁然开朗了起来)

内存地址内存地址中的数注释指向这块内存的寄存器
0xffffd0e8函数phase_2的栈帧
0xffffd0e40xffffd0f4函数phase_2的栈帧
0xffffd0e00x5655b7b0函数read_six_numbers的第一个入口参数,函数phase_2的栈帧
0xffffd0dc0x565566ca函数read_six_numbers的返回地址,函数phase_2的栈帧
0xffffd0d80x5655af64旧%ebx的值
0xffffd0d4
0xffffd0d0%esp
0xffffd0cc0xffffd1080x6
0xffffd0c80xffffd1040x5
0xffffd0c40xffffd1000x4
0xffffd0c0

0xffffd0fc

0x3
0xffffd0bc0xffffd0f80x2
0xffffd0b80xffffd0f40x1
0xffffd0b40x565583c10x565583c1是字符串'%d %d %d %d %d %d'的地址
0xffffd0b00x5655b7b00x5655b7b0是你输入的针对'phase_2'的字符串的地址

图4:实际运行与纸上分析——使用"ni"命令执行第<read_six_numbers+60>行汇编代码之后各寄存器与栈帧的情。

内存地址内存地址中的数注释指向这块内存的寄存器
0xffffd0e8函数phase_2的栈帧
0xffffd0e40xffffd0f4函数phase_2的栈帧
0xffffd0e00x5655b7b0函数read_six_numbers的第一个入口参数,函数phase_2的栈帧
0xffffd0dc0x565566ca函数read_six_numbers的返回地址,函数phase_2的栈帧
0xffffd0d80x5655af64旧%ebx的值
0xffffd0d4
0xffffd0d0%esp
0xffffd0cc0xffffd1080x6
0xffffd0c80xffffd1040x5
0xffffd0c40xffffd1000x4
0xffffd0c0

0xffffd0fc

0x3
0xffffd0bc0xffffd0f80x2
0xffffd0b80xffffd0f40x1
0xffffd0b40x565583c10x565583c1是字符串'%d %d %d %d %d %d'的地址
0xffffd0b00x5655b7b00x5655b7b0是你输入的针对'phase_2'的字符串的地址
寄存器名称寄存器中的值
%eax0x6

图5:实际运行与纸上分析——使用"ni"命令执行第<read_six_numbers+63>行汇编代码之后各寄存器与栈帧的情。因为此时我们的%eax寄存器中的值为0x6,大于0x5,所以不会跳转到<read_six_numbers+73>这个没有任何内容的空地址上,进而不会引爆炸弹。)

……………………

(图6:实际运行与纸上分析——使用"ni"命令执行第<phase_2+47>行汇编代码之后各寄存器与栈帧的情。接着,第<phase_2+50>行判断(%esp+4)和0的大小,如果不相等就会跳到第<phase_2+64>行,可是第<phase_2+64>行就是引爆炸弹,所以不能不相等,所以%esp+4应该是0,而我们输入的却是1,所以万万不能继续执行了)

按quit退出,接着再重复一遍,先输入phase_1的正确字符串,接着输入"0 1 2 3 4 5"作为我们假设的phase_2的答案,然后一路按"ni",一直到我们刚刚的那个地方,如 图7:又来到了同样的<phase_2+50>这个地方 所示。

图7:又来到了同样的<phase_2+50>这个地方。接着,第<phase_2+50>行判断(%esp+4)和0的大小,如果不相等就会跳到第<phase_2+64>行。但是我们此时的函数栈帧中(%esp+4)的值就是0,相等,不会跳到<phase_2+64>,所以我们输入的6个数中对了第1个数,是"0"。)

图8:实际运行与纸上分析——使用"ni"命令执行第<phase_2+55>行汇编代码之后各寄存器与栈帧的情况

接着使用同样的方法,我们分别得到了剩下的几个数为:"1 1 2 3 5",也就是说,这其实是一个以0,1开头的斐波那契数列,所以我们针对phase_2的答案字符串即为"0 1 1 2 3 5"。

I turned the moon into something I call a Death Star.
0 1 1 2 3 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/238385.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用加密软件Enigma Protector,可以轻松获得软件许可!

软件许可是在互联网上销售商业软件以及将程序的使用锁定到特定用户或计算机的最常用方式。在这篇文章中&#xff0c;我将解释什么是软件许可证以及如何使用Enigma Protector将其应用到现有软件。 The Enigma Protector 是一款专门设计用来为应用程序添加高强度保护的强大工具。…

【VTK】VTK中的宏定义

很高兴在雪易的CSDN遇见你 【vtkWidgetRepresentation】第九期 vtk中的仿射变换 前言 本文分享VTK中的宏定义&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点赞就是我的…

chrome浏览器使用flash player

今天用chrome打开学校校园网&#xff0c;显示不出来成绩单提示如下&#xff1a; 结果下了也没用。 Chrome浏览器在2020年12月已经停止支持Flash Player插件&#xff0c;所以无法在Chrome浏览器上使用Flash Player。 使用其他浏览器 如果之前安装了Flash Player插件的小伙伴&…

关于引用unpkg.com的mars3d相关依赖文件报错无法请求的说明

问题来源&#xff1a; 1.关于引用unpkg.com的mars3d相关依赖文件报错无法请求的说明 说明&#xff1a; 1.最近npm、unpkeg都访问异常&#xff0c;可能是unpkg.com等国外的服务器不稳定导致的请求未响应。 解决方案&#xff1a; 1.请切换静态文件引入的方式请求相关资源。参…

QEMU源码全解析 —— virtio(1)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; virtio简介 对于一台虚拟机而言&#xff0c;除了要虚拟化CPU和内存&…

Linux:符号和符号表

文章目录 什么是符号&#xff1f;什么是符号表&#xff1f;全局符号和本地符号1. 全局符号&#xff1a;symtab符号表 2. 本地符号&#xff1a; 符号在汇编阶段符号在链接阶段1.由模块 m 定义并能被其他模块引用的全局符号。2.由其他模块定义并被模块 m 引用的全局符号。3.只被模…

电脑长截图、滚动截图软件!早用早享受!

FastStone Capture软件在屏幕捕捉、滚动截屏、屏幕录制、图片处理方面能力十分突出&#xff0c; 帮助用户以专业的方式来创建所需图片或视频。 最新版本 : FastStone Capture 10.3 软件大小 : 7.75MB 适配系统 : Windows Vista/7/8/10/11&#xff0c;WinXP 软件名称&#xff1a…

VCSA7.0加入Windows AD域失败的处理过程

一、问题现象 vcsa7.0加入AD域时提示“Idm client exception: Error trying to join AD, error code 2453” 二、处理过程 &#xff08;一&#xff09;检查是否DNS问题 查看dns是否设置正确&#xff0c;如下&#xff1a; 1. Enable SSH on VCSA. 2. Command> shell 3…

微信小程序---wxs脚本

WXS&#xff08;WeiXin Script&#xff09;是小程序的一套脚本语言&#xff0c;结合 WXML&#xff0c;可以构建出页面的结构。 WXS 与 JavaScript 是不同的语言&#xff0c;有自己的语法&#xff0c;并不和 JavaScript 一致。 1.wxs和JavaScript的区别 2.wxs脚本基础语法 &a…

短视频引流获客系统:引领未来营销的新潮流

在这个信息爆炸的时代&#xff0c;短视频已经成为了人们获取信息的主要渠道之一。而随着短视频的火爆&#xff0c;引流获客系统也逐渐成为了营销领域的新宠。本文将详细介绍短视频引流获客系统的开发流程以及涉及到的技术&#xff0c;让我们一起来看看这个引领未来营销的新潮流…

CRAMdb:动物微生物组的组成和功能综合数据库

中国中医科学院陈同、石河子大学胡圣伟、倪伟及团队在Nucleic Acids Research发表与动物相关的微生物数据CRAMdb&#xff0c;数据库中包含9430种细菌、278种古细菌、2216种真菌和458种病毒等超1.2万种微生物。与同类型其他数据库对比&#xff0c;CRAMdb囊括微生物更加广泛&…

R语言,table()函数实现统计每个元素出现的频数+并将最终统计频数结果转换成dataframe数据框形式

在 R中&#xff0c;要统计dataframe数据框中每个元素出现的频数&#xff0c;可以使用table()函数。以下是一个示例&#xff1a; 目录 一、创建数据 二、统计第一列每个元素出现的频数 三、统计第二列每个元素出现的频数 四、将频数结果转换为数据框&#xff0c;并改列名 一…

keil生成bin文件(通用型)

有些时候需要在keil里面生成bin文件&#xff0c;但找到的各种方式五花八门&#xff0c;特别是要填写文件路径等没有通用性&#xff0c;搞个不同的工程就得改下&#xff0c;找到这个跟路径无关的代码&#xff0c;进行记录下。 首先还是点开keil的设置&#xff1a; 按照上面的图…

多维时序 | MATLAB实现SAO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现SAO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现SAO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SAO-CNN-B…

Flask template+Vue +项目中include引入其他模版(其他模版也会用到vue)的使用探索

项目背景是&#xff1a;团队的历史项目&#xff0c;是flask tmeplate写的前段页面。然后我在一个页面A.html中引入了vue文件&#xff0c;使用了vueelement_ui技术。现在想在此A页面中插入另外一个页面B.html的内容&#xff08;试图tab分开&#xff09;&#xff0c;因为入口只有…

Cython笔记:基本使用方法

1 Cython 介绍 Cython 是一种编程语言&#xff0c;用于编写 C 扩展的 Python 模块。它结合了 Python 的易用性和 C 的执行效率&#xff0c;旨在提高特定类型的任务的性能&#xff0c;特别是涉及大量数值计算的任务。 1.2 几个特征 1.2.1 Python 语法的基础 Cython 的大部分语…

Echarts 折线图 颜色填充 标记点 相关设置

数据 const xData [小米, 三星, 苹果] const yData [2451, 5415, 4012]配置项 {xAxis: {type: category,data: xData},yAxis: {type: value},series: [{type: line, //设置折线图data: yData,}] }曲线图&#xff08;平滑过度&#xff09; smooth: true内容填充&#xff08;…

HTML如何使用图片链接

文章目录 图片链接的使用常见图片类型PNGJPGGIFBMP 图片链接的使用 在 HTML 中&#xff0c;图像由 标签定义。 是空标签&#xff0c;意思是说&#xff0c;它只包含属性&#xff0c;并且没有闭合标签。 语法&#xff1a; <img src”图片路径" title“鼠标悬浮在图片上…

甲醛处理企业网站效果如何

甲醛往往是新装房间主所担心的问题&#xff0c;而甲醛处理公司则可以处理甲醛问题&#xff0c;市场需求也比较高&#xff0c;虽然具备同城服务属性&#xff0c;但外地或连锁经营也非常适合&#xff0c;而品牌们也遇到一些痛点&#xff1a; 1、品牌宣传拓客难 甲醛处理公司也需…

AI数字人直播能力堪比真人涌入直播大军!

近几年&#xff0c;国内外电商直播产业飞速发展。相关报告显示&#xff0c;截至2022年12月&#xff0c;电商直播用户规模为5.15亿人次&#xff0c;占网民数量的48.2%&#xff0c;总结来说&#xff0c;近一半的网民都在各类直播间购买过商品。 但是随着直播行业不断发展&#xf…