用户
搜索

该用户从未签到

i春秋-呆萌菜鸟

末心网安 海格

Rank: 1

3

主题

3

帖子

45

魔法币
收听
0
粉丝
0
注册时间
2021-6-9
发表于 2021-10-7 19:40:04 0953
本帖最后由 海格 于 2021-10-7 11:47 编辑

题目:新年快乐
平台:buuctf
题目提示信息:过年了要不做个逆向题庆祝一下新年?说不定会有惊喜哦!注意:flag并非是flag{XXX}形式,就是一个字符串,考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交
01.png
解题思路 01.png
下载后得到附件,发现出题人使用UPX加了一个小壳子。
01.png
放到UPXshell里解密
01.png
成功
拉到IDA32里,进行分析
Shift+F12
01.png
这里应该有个判断
01.png
跟踪到这里,索性直接F5吧!
01.png
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!}
01.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.    能认识一些汇编语言

微信公众号:末心网安 | Q群973504130 | 淘宝店铺:末心网络|TinSec(听安)
发新帖
您需要登录后才可以回帖 登录 | 立即注册