首页 > 其他分享 >bomb_lab

bomb_lab

时间:2023-08-16 19:23:34浏览次数:37  
标签:bomb edi lab eax gdb 寄存器 phase 输入

phase_1

%eax 作为上一个函数的返回值,若 %eax 为0,才可以执行跳转

函数 strings_not_equal ,通过阅读代码可以发现这个函数是判断输入的两个字符串是否相等,知道函数传进去的参数分别在寄存器 %edi 和 %es i中,其中 %edi 是我们输入的字符串

寄存器 %esi 里的值就是本题答案,寄存器 %esi 是被地址在 0x402400 的内容赋值,通过gdb查看一下该地址内容

gdb bomb
查看该地址内容

(gdb) x/s 0x402400
出现本题答案:

Border relations with Canada have never been better.

phase_2

%eax = %eax + %eax

当 %rbp 与 %rbx 的值相等,则结束循环

第一个整数必须为1,后面的每一个元素都是前一个元素的两倍

本题答案:

1 2 4 8 16 32

phase_3


首先通过 sscanf 解析字符串,通过 gdb 调试可看出 sscanf 的 format 是%d %d 因此推断输出两个数字

(gdb) x/s 0x4025cf
0x4025cf: "%d %d"
输入的第一个值要大于等于 1

 

 7 必须大于 0x8(%rsp) --就是输入的第一个值,才不会发生爆炸

输入的第一个值存到 %eax 中,然后执行跳转,地址为内存地址 0x402470(,%rax,8)处的值

下面我们用 gdb 调试一下看看内存地址为 0x402470(,%rax,8) 的值

gdb x/s 0x402470(,%rax,8)

当输入值(%rax)为 0 的时候,跳转到 0x400f7c

所以答案:

2 707 ....

phase_4

这里的 sscanf 也是输入两个数字,分别在地址0x8(%rsp)、0xc(%rsp) 上

输入的第一个值不能为 2

输入的第一个值要小于 14(0xe)

将 edx、esi、edi 赋值,将参数传进 func4函数 中

当执行完 func4 函数之后返回的值在寄存器 %eax 中

返回值 %eax 要为 0

并且,0xc(%rsp) --输入的第二个值 也必须为 0

所以解析字符串为两个数字 x、y

x 必须小于等于14

调用 fun​​​​​​​c4,x、0、14 分别为其参数

func4 返回值必须为0,y 必须为0

func4 :

eax = edx
eax = eax - esi
ecx = eax
ecx = 0
eax = eax + ecx
eax = eax / 2
ecx = esi + eax
if(edi >= ecx)
{
return
eax = 0 
edi <= ecx
}

寄存器 %eax 和 %ecx 存了7

答案:

7 0

phase_5

 

 



标签:bomb,edi,lab,eax,gdb,寄存器,phase,输入
From: https://www.cnblogs.com/sunyang13763857269/p/17635991.html

相关文章

  • vite打包报错:ERROR: Top-level await is not available in the configured target env
    在开发时,vita打包报错如下: 原因:ECMAScript提案Top-levelawait由MylesBorins提出,它可以让你在模块的最高层中使用await操作符。在这之前,你只能通过在async函数或asyncgenerators中使用await操作符。Top-levelawait是个新特性,打包不支持此特性。解决方案:1.......
  • 手把手教你使用LabVIEW TensorRT实现图像分类实战(含源码)
    ‍‍......
  • gitlab-runner register
    [root@g~]#gitlab-runnerregisterRuntimeplatformarch=amd64os=linuxpid=23614revision=ac8e767aversion=12.6.0Runninginsystem-mode.P......
  • matlab画图练习1
    %compare(lnx/x/sinx/e^x)x=0:0.01:+4;y1=log(x);y2=x;y3=x.*x;y4=sin(x);y5=exp(x);%plot(x,y1,y2,y3,y4,y5);gridonplot(x,y1,'r');holdonplot(x,y2,'b');holdonplot(x,y3,'g');holdonplot(x,y4,'b');hol......
  • m扩展索引OFDM(Spread-OFDM-IM)matlab仿真,信号检测对比ZF,MMSE,ML等方法
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要        基于索引调制的OFDM(OFDM-IM,OFDMwithIndexModulation)技术被提出,在频率选择性衰落信道上提升了系统的分集增益,特别是在较低频谱效率场景下能够有效降低系统的误比特率。......
  • 【资料包】HDC.Together 2023精选Codelabs指南现已上线(内有活动)
     今年HDC.Together 2023的Codelabs挑战系列活动如期而至,众多开发者齐聚一堂,积极参与。本次赛题中部分Codelabs已在官网上线详细操作指南,让我们与众多coders一起探索代码的独特魅力。 01ArkTS基础知识(ArkTS)本课程使用声明式语法和组件化基础知识,搭建一个可刷新的排行榜页......
  • 修复漏洞-gitlab升级(2)
    修复漏洞-gitlab升级(2)接上一篇。。。升级完我就做了个快照,等领导有空试用下,然后我不忘提醒,升级十几个版本需要花费2天时间,而且升级过程中有些报错,不知道会不会影响使用。领导说直接装新版本,免得夜长梦多(一下子推翻我所有的努力)当时我领导想买一台按量付费的服务器B......
  • 修复漏洞-gitlab升级(1)
    修复漏洞-gitlab升级(1)这东西搞了我很久。。。今天终于告一段落了,可喜可贺(现在喉咙痛想生病的样子)上一篇提到我们的gitlab版本存在漏洞:任意文件读取漏洞(CVE-2020-10977),大家有兴趣可以查下这个安全漏洞的重现  (虽然是测试域名被测到,但真实环境就是这个版本)。而领导最......
  • 基于四旋翼无人机的PD控制研究(Matlab代码实现)
    ......
  • LabVIEW图形化TensoRT工具包的安装下载分享
    (文章目录)前言Hello,大家好,我是virobotics(仪酷智能),今天我们一起来看一下如何安装【LabVIEWTensoRT工具包】。一、LabVIEW图形化TensoRT工具包简介<fontface="SimSun"color=blacksize=4>工具包特点:</font>图形化编程:无需掌握文本编程基础即可完成机器视觉项目;直接的模......