前言
继续ctf的旅程
攻防世界Reverse高手进阶区的3分题
本篇是crackme的writeup
攻防世界的题目分数是动态的
就仅以做题时的分数为准了
解题过程
查壳,显示nsPack壳

找了个工具脱壳

扔进IDA

flag是输入值,进行判断:
- 长度是42位
- 有一个while循环

根据逻辑写脚本:
key1="this_is_not_flag"
key2=[0x12, 4, 8, 0x14, 0x24, 0x5C, 0x4A, 0x3D, 0x56, 0x0A, 0x10, 0x67, 0,
0x41, 0, 1, 0x46, 0x5A, 0x44, 0x42, 0x6E, 0x0C, 0x44, 0x72, 0x0C, 0x0D,
0x40, 0x3E, 0x4B, 0x5F, 2, 1, 0x4C, 0x5E, 0x5B, 0x17, 0x6E, 0x0C,
0x16, 0x68, 0x5B, 0x12, 2, 0x48, 0x0E]
flag=""
for i in range(len(key2)):
flag+=chr(key2[i]^ord(key1[i%16]))
print(flag)
结语
其实这里取巧了
因为考点在于nspack壳的ESP手动脱壳
可以参考:
本文记录了一次攻防世界中关于逆向分析的挑战,涉及使用ida对nsPack壳进行脱壳,并通过逻辑分析解密flag。作者分享了编写脚本的过程,其中关键步骤包括对加密key的处理,最后成功解出42位的flag。虽然文章重点在于逆向工程技术,但也提及了利用ESP定律手动脱壳的技巧。
1602

被折叠的 条评论
为什么被折叠?



