moctf-逆向题-writeup(上)
MOCTF 逆向题 writeup
moctf平台:http://www.moctf.com/challenges
之前寒假做 moctf 的逆向题时,是看着网上各位师傅们的 writeup 做的,他们的后三题都是用 IDA 做的,直接 F5 看伪代码分析出来的,最近在用 OD 分析算法,尝试把之前的再做一遍并写出 writeup,前两天自己做出了 Crackme-006 让我信心大增,哈哈哈https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/emoji_wx/2_04.png
moctf 逆向第一题:SOEASY,这个是个64位的软件,OD 打不开,只好用 IDA64 打开,直接搜字符串就可以看到flag:moctf{S0_3asy!}
https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wqjCIcOQn3shFgbuibiabOf0eK3FFR9QG8ETOY2rM5gicVjxrdLb7NVic7Q/640
moctf 逆向第二题:跳跳跳这个题当时给了初学破解的我很大的成就感,当时就学了改指令爆破,根本不会分析算法,这就能做出一道题还是很舒服的
打开程序,是个猜数游戏https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wrJxnuXsoJMUfHerMlwKjATokcMAR7mS9XCMyF2Eib7s9X63vPo4iaOmQ/640
载入 OD 搜索字符串https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5w4IibhenbHE0rONMPPPwsjiaq1xqgctK2MbJqB9viajHKKg1CF5HBnjA1g/640
双击跟过去看看,很清晰了,那个 jnz 是关键,只要不让这个跳转实现就正确https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wftTM3I15H1nzwINSG0F8SOibVpUJqicGIGhgHwx8Djf2At5ibMZJVial4g/640
那就直接把他 NOP 掉吧https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wicgMZl62Qj3975p133b9913CYCfTchUraxc0qzjibw9ahFw7Ko6EfEuA/640
保存出来https://mmbiz.qpic.cn/mmbiz_jpg/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wEafg2CWzmuJO9JVKt8GbkPRRvwMGplItgMbE3USiaBKVT35C5sKLZ3g/640
随便输入,最后还是可以成功出来 flaghttps://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wGM0TNBXdOEeKRJ7s41nQias4gxUvjicSfAlibia7WcuutcibGG0UTRU90bQ/640
这个 falg 是 base64 加密的,之前在这里提交好多次总是不对,之后试了试才发现编码了整理出来了,不客气ZHUtcF8xc19FYVN577yBmoctf{du-p_1s_EaSy!}
moctf 逆向第三题:暗恋的苦恼当时可是费了好大劲才看懂这个伪代码的 (不知道现在还看不看得懂),这次用 OD 分析的还算顺利,但是也花了一个多小时……
https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wVWjNoMG2MJCWLRDkdRICbibh3dAUIm3MUKrUJ4ibn9fF7FHSqqhAxzrw/640
先来看一下流程:https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wXLmlg8y4OFpbibxOKXaOV9NgZloEKqk58PZLceo8V4cVYxcplQfxnVA/640
载入 OD,通过字符串找到获取输入的地方,在下图箭头所指的地方程序运行起来等待输入https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wEhZBgxINrK1dyrID1ia6x3PsO72fwNS75iboibP3yI8c8dUdjZtLfPS6Q/640
可以看到,经过一个 CALL 之后出现了加密后的字符串,那就跟进这个 CALL 看一下https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wSd7o9ic8G66wbicuN5qmsPUJOAro0bxmoCib1miaHMksMt8IUia7Re44PcA/640
之后还得再进一个 CALL 才能发现程序算法 (程序是一个字一个字加密的刚开始会把输入的全部转换成大写)https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5woT5IFcSxKK6WVHZMD9OH8iawEqFXN7VM18ROmnqraianIjvy0z95nXfA/640
程序算法:1. 逐个取字符,转成大写的,然后用大写形式的 ASCII 码减去 41 (十六进制) 得到结果 (十六进制) 2. 然后用密钥的大写形式加上得到的结果PS.这里做了一些处理,如果加上以后结果超出了大写字母 Z (0x5A),那么会再减去19 (十六进制)https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wibZXgT63ugZDV1gzpyiavWaDUlLcVPtdHPHprxzibxHSdfPib6WJWU0HRA/640
然而还有个问题,我发现给出的密文长度是比密钥长的,那怎么办?记得之前看的 writeup 说密钥循环使用的,即:ilovemoctfilovemoctf,这样一直排下去,不管多出来多少密文都可以加密
为了验证这个问题,我做了一个实验这样输入的明文个数比密钥多一个,而且多的是与第一个一样的,我们看一下是不是按照那样循环是用的https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wHTMaSzCs3lDpn0NrHacO6Dl8v84TicvXxm2CYTcmwaSFy7kf9GPL1RQ/640
加密结果让我很欣慰,证明我记性还不错https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/emoji_wx/2_02.pnghttps://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wu9M9VebjibjbKd1jTCAydjhUdsItJRSI3RmYFp7ib42pEKcjtgYXHqCw/640
参考脚本,这或许会帮你更好的认识这个程序的流程(编程能力太垃圾,这还是参考之前写过的才写出来,用进废退啊)https://mmbiz.qpic.cn/mmbiz_png/df1X0NvQ5KkiabsJHwITsvWgYgtutuL5wMnk3byzWy8SymxrW23OWcBOn8c1rVt5bMOH70n9PDMk4Bic1Ie8P30w/640
明文:ILOVEYOUTOOflag:moctf{ILOVEYOUTOO}
回帖是一种美德,顶贴是给楼主热心分享的动力!!!
占个沙发{:5_116:} 感谢你的支持有你更精彩 感谢大佬分享 感谢分享逆向思路,努力学习 感谢大佬分享
页:
[1]
2