ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CraMe1.exe

2021-02-11 16:59:53  阅读:103  来源: 互联网

标签:CraMe1 exe 相等 修改 right 跳转


CraMe1.exe

要求:运行CraMe1.exe,提示 "u r right!"代表成功。首先修改exe使得出现成功提示,其次不修改exe输入正确的密码达到成功的目的。

第(1)问:修改exe使得出现成功提示

先打开运行CraMe1.exe:
在这里插入图片描述

  应该是输入一串字符,经过判断之后输出“u r wrong”或者“u r right!”。
  用IDA打开CraMe1.exe,在String Windows搜索字符串“u r right!”:
在这里插入图片描述

双击进入IDA View-A,这里是所有字符串在内存中的虚拟地址:
在这里插入图片描述

选中字符数组aURRight,按下“X”键,单击将指向使用该字符串所在的地址:
在这里插入图片描述在这里插入图片描述

  在这里我们可以清楚的看到上一行的jnz(比较不相等则跳转),如果比较之后相等则不跳转输出“u r right!”,如果不相等则跳转到虚拟地址411613输出“u r wrong”:
在这里插入图片描述

打开视图可以看的更清楚代码逻辑:
在这里插入图片描述

  所以我们的目的就是修改跳转,将jnz(不相等时跳转)改为jz(相等时跳转),这样只要我们没有输出正确的flag,都会输出“u r right!”。
  用16进制编辑器或者OD之类的修改都行,这里用OD修改直接搜索二进制75 19找到相应的位置:
在这里插入图片描述

二进制编辑将75改为74:
在这里插入图片描述

复制到文件,保存:
在这里插入图片描述

然后保存到可执行文件,保存成名为CraMe11.exe的可执行程序,之后运行修改后的程序随便输入一个数据,结果如下图所示:
在这里插入图片描述

第(2)问:不修改exe输入正确的密码达到成功的目的

  首先还是找到关键跳转的地方,然后发现上面对ebp-0xc0处的数据进行了比较,根据比较是否相等来决定是否跳转,所以向上继续查找有没有对ebp-0xc0的数据进行修改的地方
在这里插入图片描述

然后找到如图所示的地方:
在这里插入图片描述

这两处的跳转都应该实现,然后在上边较远处下一个断点然后一步一步走,最后会发现关键代码是:
在这里插入图片描述

  对其进行分析,一共可以分为两部分,第一部分是对前17位进行比对,要求相等,程序中给出了下列字符串:
Str=swfxc{gdv}fwfctslydRddoepsckaNDMSRITPNsmr1_=2cdsef66246087138”
  然后内存中又给出了一串数据:
Arr={0x01,0x04,0x0E,0x0A,0x05,0x24,0x17,0x2A,0x0D,0x13,0x1C,0x0D,0x1B,0x27,0x30,0x29,0x2A,0x1A,0x14,0x3B,0x04,0x00}
首先是从内存中一个一个找Str[Arr[i]]与输入的字符串进行比较,只比较前17位,然后如果不相等就会给ebp-0xC0处的数据赋值为1,然后跳转到失败。
  所以前17位就是Str[Arr[i]],后面还有比较的地方可以得出后面还有5位分别为0x31,0x30,0x32,0x34,0x7D
在这里插入图片描述

将它们一个一个转换成Ascii码对应的字符串,最后得出flag为:
wctf{Pe_cRackme1_1024}
在这里插入图片描述

标签:CraMe1,exe,相等,修改,right,跳转
来源: https://blog.csdn.net/Onlyone_1314/article/details/113790829

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有