180714 逆向-MeePwn(IMAGE_CRACKME)

本文介绍了如何解决一个基于Golang编译的逆向工程挑战,该挑战要求找到用于生成Meepwn.ascii.bak的密钥。通过观察程序行为和输入输出模式,作者推断出逐字节处理和循环密钥的使用。通过已知的前7个字符'MeePwn{',利用逐字节爆破的方法,最终确定密钥长度为33的倍数,并成功找到了正确的密钥。
摘要由CSDN通过智能技术生成

一堆Reverse只有这个签到题难度的玩意儿能水一水(:з」∠)夜影为什么这么菜

Find the key that was used to generate Meepwn.ascii.bak
Sometimes you don’t really need to read the code
Notice: Flag is in format MeePwn{…}

不需要真的阅读代码的意思就是黑盒测试了
大概扫了一遍代码,及其丑,跟以往的C语言很不一样
左侧的库函数命名风格也截然不同

UltraEdit看一眼,果然发现了熟悉(个锤子)的Go build ID,说明这是Golang语言编译的

题目既然都说不用读了,那我们暂时也就先不读了吧~过两天再逆试试

运行bin程序,发现提示输入key的长度和生成了160x160的image

刚开始还以为是字符画,但是横竖看都看不出来啥东西。而且字符画处理起来难度似乎有点大,所以估计走错了

再多输入几个字符测试,发现当key的长度相同时,运行结果的格式是相同的,仅仅是字符内容不同
例如开头前六个字符同样都是”AABAAC”这样

因此猜测是逐字节的处理~

再控制key是2个字节,保持第二字节不同而第一字节改变,对比两次结果发现仅有1, 3, 5等奇数字节改变,而偶数字节不变

由此猜测是循环key的处理~

下一步猜测,根据题目说明确认key的前7个字符是”MeePwn{“,因此以它作为key产生的结果前7个字符必然与MeePwn.ascii.bak的前7个字符结果相同

验证无误后,解题思路就很简单了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值