西工大网络空间安全学院计算机系统基础实验二(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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络基础(七):传输层协议介绍

目录 一、TCP协议&#xff08;传输控制协议&#xff09; 1、TCP协议介绍 2、TCP协议特性 3、TCP报文格式 4、TCP的三次握手 4.1TCP三次握手的概念 4.2TCP三次握手流程图 4.3 TCP三次握手阐释说明 5、TCP的四次挥手 5.1TCP四次挥手的概念 5.2TCP四次挥手的流程图 5.…

qt-C++笔记之addAction和addMenu的区别以及QAction的使用场景

qt-C笔记之addAction和addMenu的区别以及QAction的使用场景 code review! 文章目录 qt-C笔记之addAction和addMenu的区别以及QAction的使用场景1.QMenu和QMenuBar的关系与区别2.addMenu和addAction的使用场景区别3.将QAction的信号连接到槽函数4.QAction的使用场景5.将例1修改…

用 CSS 写一个渐变色边框的输入框

Using_CSS_gradients MDN 多渐变色输入框&#xff0c;群友问了下&#xff0c;就试着写了下&#xff0c;看了看 css 渐变色 MDN 文档&#xff0c;其实很简单&#xff0c;代码记录下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta ch…

Error: Failed to resolve vue/compiler-sfc——vite项目启动报错——npm run serve

运行项目时&#xff0c;报错如下&#xff1a; Error: Failed to resolve vue/compiler-sfc 根据报错信息的提示&#xff1a;vue的版本必须大于3.2.25&#xff0c;经过查看package.json文件&#xff0c;可以看到vue的版本为3.2.36&#xff0c;是满足条件的。 因此考虑缓存问题&…

12/11

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xf…

【AI】ChatGLM3-6B上手体验

之前写过ChatGLM2-6B大语言模型的部署安装文档&#xff0c;现在ChatGLM模型已经更新迭代到第三代了&#xff0c;从官方公布的数据来看&#xff0c;模型的能力是得到了进一步的增强。 这次写文章主要是来记录一下使用过程&#xff0c;方便回头查看。 ChatGLM3-6B官方的视频教程…

HTML常用表单元素使用?

目录 一、常用表单元素使用的关键字二、常用表单元素使用的效果与作用&#xff08;1&#xff09;password : 保护用户的隐私(2) email: 输入邮件&#xff08;比如QQ邮件&#xff09;(3)、number : 输入框只能输入数字&#xff08;4&#xff09;、tel : 常用于输入电话号&#x…

ubuntu install sqlmap

refer: https://github.com/sqlmapproject/sqlmap 安装sqlmap&#xff0c;可以直接使用git 克隆整个sqlmap项目&#xff1a; git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev 2.然后进入sqlmap-dev&#xff0c;使用命令&#xff1a; python s…

【C语言程序设计】顺序结构程序设计

目录 前言 一、程序阅读 二、程序改错 三、程序设计 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转…

图文教程:stable-diffusion的基本使用教程 txt2img(多图)

之前我介绍了SD的安装过程&#xff0c;那么这篇将介绍怎么使用SD 使用模型 SD安装好之后&#xff0c;我们只有一个默认的模型。这个模型很难满足我们的绘图需求&#xff0c;那么有2种方法。 1是自己训练一个模型&#xff08;有门槛&#xff09;2是去网站上找一个别人练好的模…

国际验证码有哪些具体的应用场景?

用户注册 在许多网站和应用程序中&#xff0c;用户注册是必要的第一步。通过使用验证码接口&#xff0c;可以防止恶意机器人或自动化程序大规模注册账号&#xff0c;从而保护网站或应用程序的安全性和可靠性。 密码重置 当用户忘记密码或需要重置密码时&#xff0c;验证码可…

一、微前端目标、前端架构的前生今世、微前端架构优势和劣势、软件设计原则与分层

1、目标 2、前端架构的前世今生 ① 初始&#xff1a;无架构&#xff0c;前端代码内嵌到后端应用中 ② 后端 MVC 架构&#xff1a;将视图层、数据层、控制层做分离 缺点&#xff1a;重度依赖开发环境&#xff0c;代码混淆严重&#xff08;在调试时&#xff0c;需要启动后端所有…