题目:新年快乐
题目提示信息:过年了要不做个逆向题庆祝一下新年?说不定会有惊喜哦!注意:flag并非是flag{XXX}形式
就是一个字符串。考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交
解题思路
下载后得到附件发现出题人使用UPX加了一个小壳子。
放到UPXshell里解密
成功
拉到IDA32里,进行分析
Shift+F12
这里应该有个判断
跟踪到这里,索性直接F5吧!
- int__cdecl main(int argc, const char **argv, const char **envp)
- {
- int result; // eax
- char v4; // [esp+12h] [ebp-3Ah]
- __int16 v5; // [esp+20h] [ebp-2Ch]
- __int16 v6; // [esp+22h] [ebp-2Ah]
- __main();
- strcpy(&v4, "HappyNewYear!");
- v5 = 0;
- memset(&v6, 0, 0x1Eu);
- printf("please input the trueflag:");
- scanf("%s", &v5);
- if ( !strncmp((const char *)&v5, &v4,strlen(&v4)) )
- result = puts("this is trueflag!");
- else
- result = puts("wrong!");
- return result;
- }
复制代码
注意第九行,strcpy,也就是复制字符串。也就是将后面的内容复制给了v4,那么下面的判断也就是判断v5的
内容是否等于v4,所以flag也很好发现。就是HappyNewYear!
最终,我们得到flag:flag{HappyNewYear!}
事实上,我们跟进了那么多,还是回到了_main函数,毕竟是Vc++的编译器。
各种颜色,也表示了很多东西:
黄色:未定义数据类型
黑色:代码
灰色:数据
跳转表示:
虚线:条件跳转
实线:无条件跳转
颜色须知:
在IDA自动把识别的API标为红色
在病毒分析时候我们会看到调用各种API
windows API查询网址:
https://docs.microsoft.com/zh-cn/windows/win32/apiindex/windows-api-list?redirectedfrom=MSDN
题感
这道题是一道比较简单的revers题目,我们所需要的东西有下:
1. IDA工具使用经验
2. 逆向思路
3. C语言基础
4. ASCII编码表
5. 系统常识
6. UPX脱壳加壳
7. 代码理解能力
8. 能认识一些汇编语言 |