电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1484 人浏览分享

BUUCTF学习记录-Reverse(五)

[复制链接]
1484 0
题目:新年快乐
题目提示信息:过年了要不做个逆向题庆祝一下新年?说不定会有惊喜哦!注意:flag并非是flag{XXX}形式
就是一个字符串。考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交

114427onf1eszsdejxtfr7.png.thumb.jpg

114501xfjpdhji5pjmfiii.png.thumb.jpg

解题思路
下载后得到附件发现出题人使用UPX加了一个小壳子。

69.jpg

放到UPXshell里解密

68.jpg

成功
拉到IDA32里,进行分析
Shift+F12

63.png

这里应该有个判断

67.jpg

跟踪到这里,索性直接F5吧!

66.jpg

  1. int__cdecl main(int argc, const char **argv, const char **envp)
  2. {
  3.   int result; // eax
  4.   char v4; // [esp+12h] [ebp-3Ah]
  5.   __int16 v5; // [esp+20h] [ebp-2Ch]
  6.   __int16 v6; // [esp+22h] [ebp-2Ah]
  7.   __main();
  8.   strcpy(&v4, "HappyNewYear!");
  9.   v5 = 0;
  10.   memset(&v6, 0, 0x1Eu);
  11.   printf("please input the trueflag:");
  12.   scanf("%s", &v5);
  13.   if ( !strncmp((const char *)&v5, &v4,strlen(&v4)) )
  14.     result = puts("this is trueflag!");
  15.   else
  16.     result = puts("wrong!");
  17.   return result;
  18. }
复制代码

注意第九行,strcpy,也就是复制字符串。也就是将后面的内容复制给了v4,那么下面的判断也就是判断v5的
内容是否等于v4,所以flag也很好发现。就是HappyNewYear!
最终,我们得到flag:flag{HappyNewYear!}

22.png

事实上,我们跟进了那么多,还是回到了_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.    能认识一些汇编语言

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.