白菜哥的新年独享100块解谜红包WriteUp

过年一起玩呀

白菜哥的新年大红包由两部分组成,

Part1:[F1129B4C724435598515598630AC61A8]

Part2:

 

扫描二维码后得到网址 http://7sbxnl.com1.z0.glb.clouddn.com/dahongbao.txt

下载TxT,打开后发现是Base64编码后的文字。

使用Base64解码后,用file命令查看文件类型。得知是win32下压缩的rar压缩包。

1
2
cat dahongbao.txt | base64  -d >dahongbao.bin
file dahongbao.bin

打开压缩包后,发现文件有密码,无法继续进行。

回归Part1下手,容易发现Part1是使用摘要算法后的Hash。实际这里使用的是md5。在cmd5等查询网站查询均无结果。将Part1直接拖入百度搜索,得到如下结果:

得到hash对应的字符串:

+ibcerj?ianu

这里加密采用了Qwerty键盘和Dvoark键盘的映射加密。根据对应规则解密得到

}gnidoc{galf

将顺序颠倒后便是

flag{coding}

根据之前发布的提示,rar密码为c0d1ng。解压rar获得havefun.txt。打开后看到“This program cannot be run in DOS mode.”便知道为Windows 可执行文件,与file命令得到的类型一致。修改后缀为exe。运行后弹出错误提示。

考虑到可执行文件无法执行,可能为PE头错误,用二进制编辑器打开havefun.exe,发现其中一个偏移量9000有问题,对应位置应为8000,修复后保存

运行后可获得一串数字,且没有数字大于7,因此考虑为八进制数。

170157 122707 113150 24304 107577 166230 112777 167224 131307 136626 167174 126377

反汇编原始程序,定位到main()入口,发现循环调用了part1函数,并且输出part1的返回值,共循环12次,输出使用%o格式化。

定位到part1函数,发现part2函数将传入参数加7dfh后返回。7dfh=2015d。因为今年是2015年,猜测加密函数f(x) = x+2015,因此将上面的八进制串每个都减掉7dfh。

得到十六进制的数字串

E890 9DE8 8E89 20E5 87A0 E4B9 8E20 E6B5 AAE8 B5B7 E69D A520 E587 A020 E59D 97E9 92B1 20EF BC9F。

每两位分割添加%号并且url解码后得到中文

“萝莉 几乎 浪起来 几 块钱 ?”

这一层加密采用的是拼音与T9的对应。萝莉为loli 对应56 54 ,几乎 对应54 48, 浪起来 对应57 51, 几 对应54  块钱 对应57。

56 54 54 48 57 51 54 57 再查 ascii 码表发现全部为数字,86609369,为最终的红包密码。

总的来说最后一步需要一定的运气。其他的步骤还算正常。很可惜没有人在10小时内拿到这个一人独吞100元大红包。