信息安全综合训练RElec3(自用、记录)

组长组员组员
E41714007E41714001E41714020

1 题目要求

在下面网址的题目中选一题做,交一份题解
http://reversing.kr/challenge.php
在这里插入图片描述
我们组选择的是Replace
在这里插入图片描述

2 解题过程

2.1 注册账号

注册成功后会收到邮件
在这里插入图片描述

2.2 下载需要的资料

点击题目,下载好压缩包后解压,可以看到以下文件
在这里插入图片描述 在这里插入图片描述

2.3 正式开始解题

双击运行可执行程序
在这里插入图片描述
尝试输入,发现在文本框中输入限制只允许输入数字,其余长度什么均没有限制,不输入点击Check,程序会报错。
在这里插入图片描述
经过查壳检查,发现该程序没有壳。随后使用IDA shift+F12显示所有的字符串。很明显会看到一个correct
在这里插入图片描述
双击correct来到数据位置,按下ctrl+X交叉引用显示调用位置
在这里插入图片描述
在这里插入图片描述
查看整体结构框架。按下空格键,会看到程序的整体流程图。
在这里插入图片描述
使用ollydbg动态调试, 根据在IDA中的相应位置,在OD中定位。ASCII表示的就是correct。
在这里插入图片描述
在下列位置设置断点,按F2
在这里插入图片描述
首先要找到输入的位置,找到getdlgitemText函数,下断点。
在这里插入图片描述
F9运行程序。输入数字123,断在0040104c处。
在这里插入图片描述
往下看,圈红的地方就是我们想要到达的地方,可是有两个jmp,这意思是怎么也不会跳到00401073这个位置了。在流程图中这个地方是断开的,没有任何地方显示它的跳转来源。
在这里插入图片描述
接着往下走,这个地方就出现了问题,程序报错了。
在这里插入图片描述
双击该语句,跳转来到下面这个语句
在这里插入图片描述
Ctrl+F2重新开始,这次运行不输入任何数据,发现程序运行到00400466F就终止了
在这里插入图片描述
因此可以知道,导致程序终止的原因就在这,它的功能是把90(也就是nop)赋值给eax中的地址。再返回
004046a9设置断点,再看下当运行到004046a9时eax的数据,输入的是12,显示的eax=601605D7.
在这里插入图片描述
输入的是1234,显示的eax=60160A9D
在这里插入图片描述
601605d7-C=601605CB
60160a9d-4c2=601605CB
可以发现有一个相同的数据601605cb
可以看004046c4这个跳转是向上跳的,可知401071的地址是jmp
在这里插入图片描述
假如是一个nop是不是就可以往下执行那个显示correct。那么怎么让程序修改它的数据为nop呢? 0040466f中正是实现这个功能。
但有两个call 0040466f。中间还对eax自增了1
可以看到00401071有数据,但00401072却不显示,这个功能就是让00401072也为nop。
在这里插入图片描述
所以这个程序的大体流程如下:0x601605cb+一个值=0x100401071

因此可以分析出程序的大概流程:

  1. 输入数据,然后程序运行到00401071,跳转到4046a9,eax=0x601605cb+输入的数据,这个值必须要等于0x00401071。然后这个eax值(0040466F $C600 90 mov byte ptr ds:[eax],0x90)也就是该中的eax值,程序会把eax也就是00401071中的指令修改为nop
  2. 运行到004046AE。eax+1=00401072,在运行到004046af程序会把eax也就是00401071中的指令修改为nop
  3. 运行到004046c4,跳转到00401071

根据分析,确定输入的数字为2687109798
在这里插入图片描述
重新运行程序,输入数据,最后你会发现如下变化
00401071变成了nop命令,同时00401072也显示出来,为nop命令
在这里插入图片描述
而且寄存器EAX的值变为FFFFFFFF,对话窗口显示correct!
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值