【原创】实验吧此处无声WP

step1 Get软件

实验吧下载软件,http://ctf5.shiyanbar.com/crack/5/
Get基本要求:找出nsfocus的正确注册码。

step2 PEID初步分析

先PEID,发现有壳,尝试脱壳失败,大致的流程是启动时先调用LoadLibrary加载kernel32.dll,然后调用GetProcAddress把函数加载到内存中。
在这里插入图片描述
使用插件查找到OEP地址4027F0
在这里插入图片描述

step3 OD逆向

加载OD,下硬件断点he 4027f0,然后F9执行,程序直接停在了EOP,比较欣慰。
在这里插入图片描述
用户名输入nsfocus,注册信息testtest,提示失败
在这里插入图片描述
OD下端口 bp MessageBoxA,并初步分析如下:

  1. 先获取用户名并计算长度
    EDI 0018F648 ASCII “nsfocus”
    在这里插入图片描述
  2. 取注册信息的输入,并判断是否是32字节0~9\A-F之间的数据,判断为MD5。
    于是计算nsfocus的MD5填入注册文本框,通过分析把数据内容保存到下面的地址
    0018F648  42 39 42 37 44 44 31 43 34 32 31 45 30 30 35 42  B9B7DD1C421E005B
    0018F658  43 39 41 37 46 37 30 42 38 34 38 45 33 44 30 45  C9A7F70B848E3D0E

在这里插入图片描述

  1. sub4018C0的目的是吧输入的MD5的数据由字符串转换为hex,保存到下面的地址
0018F58C  B9 B7 DD 1C 42 1E 00 5B C9 A7 F7 0B 84 8E 3D 0E  狗?B.[骚?剮=
0018F59C  05 72 87 D9 ED 85 6A DA B2 97 CF 63 56 C3 61 8A  r囐韰j诓椣cV胊?

然后比较上面两行是否相同,如果相同则成功。
那么问题来了18F59C的数据怎么来的?
在这里插入图片描述

  1. 重新跟踪分析发现,sub401AA0把输入的“nsfoucs”进行了MD5,并保存在0018F59C

在这里插入图片描述
5. 然后才到步骤3,此时18F58C==18F59C

在这里插入图片描述
6. 当执行sub4012f0时,发现18F58C的内容发生了变化,应该是对MD5(用户名)进行了处理。

在这里插入图片描述

综上,程序大致的意思是把输入的注册信息进行了加密,加密的结果与MD5(用户名)相同即成功获得flag。
那么相反,把MD5(用户名)进行解密的内容就是flag

直接修改汇编指令,让sub4012f0重新执行一次,发现并不能解密出想要的内容,看了一下大佬们的WP,
说是用RC6的算法,(本人目前没有道行如何判断使用哪种算法…),大概调研了一下,不同于AES,RC6虽然是对称加密,但他的加密和解密的算法不同,无法直接调用sub4012f0来解密。

在这里插入图片描述

于是找工具进行解密…
在这里插入图片描述
收工,哎,,不是很完美。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值