新年快乐题解

简介: 新年快乐题解

新年快乐题解


1.双击运行一下这个exe文件

这个程序也是需要输入一个flag,逆向来查看什么样的字符串是flag

2.查壳

是一个32位可执行文件,加了UPX壳

壳是保护程序不被IDA破解的一种手段,可以手段脱壳,可以使用工具

拖入32位IDA,按下F5不能正常反编译

3.脱壳

UPX是一种经典的壳,越是有名的壳越有各种现成的破解工具

我们所使用的工具

将可执行文件拖入这个工具

可以选择UPX壳的版本号,可以挨个尝试

点击Go,成功脱壳,重新将这个可执行问阿金拖入32位IDA

4.反汇编分析  

得到了正常的反汇编代码

找到主函数,点击F5反编译器


int __cdecl main(int argc, const char **argv, const char **envp)
{
  int result; // eax
  char Str2; // [esp+12h] [ebp-3Ah]
  char Str1[2]; // [esp+20h] [ebp-2Ch]
  char v6; // [esp+22h] [ebp-2Ah]
  __main();
  strcpy(&Str2, "HappyNewYear!");
  *(_WORD *)Str1 = 0;
  memset(&v6, 0, 0x1Eu);
  printf("please input the true flag:");
  scanf("%s", Str1);
  if ( !strncmp(Str1, &Str2, strlen(&Str2)) )
    result = puts("this is true flag!");
  else
    result = puts("wrong!");
  return result;
}

观察主函数,可以知道输入的字符串是Str1,Str1和Str2相等,就输出this is the true flag!

说明此时的Str2就是flag

上面的代码strcpy(&Str2, "HappyNewYear!");

说明Str2中存储的是HappyNewYear!

得到flag

flag{HappyNewYear!}

相关文章
AcWing 1265. 数星星(每日一题)
AcWing 1265. 数星星(每日一题)
AcWing 562. 壁画(每日一题)
AcWing 562. 壁画(每日一题)
|
7月前
|
C++
【洛谷 P1428】小鱼比可爱 题解(循环)
这是一个编程竞赛问题,题目要求编写一个程序来计算每只鱼在其视野内看到的更不可爱的鱼的数量。给定鱼的总数`n`和每只鱼的可爱程度数组`a[]`,输出每个位置的鱼能看到的更不可爱的鱼的数量。 **摘要:** ```markdown 解决一个编程挑战,计算鱼在“比可爱”比赛中左边有多少条更不可爱的鱼。输入包含鱼的总数`n`和每条鱼的可爱度,输出每条鱼眼中更不可爱的鱼数。提供的C++代码通过遍历数组,比较每只鱼的可爱度并累计小于它的数量,然后输出结果。 ``` 这个摘要在240个字符以内,简要概述了问题的背景、任务和解决方案的概要。
70 0
LeetCode】每日一题(4)
LeetCode】每日一题(4)
51 0
【LeetCode】每日一题(3)
【LeetCode】每日一题(3)
70 0
|
算法 C语言 索引
每日一题:LeetCode-283. 移动零
每日一题:LeetCode-283. 移动零
【LeetCode】每日一题(2)
【LeetCode】每日一题(2)
73 0
【LeetCode】每日一题(5)
【LeetCode】每日一题(5)
61 0
每日一题:Leetcode54. 螺旋矩阵
每日一题:Leetcode54. 螺旋矩阵
|
机器学习/深度学习 Java Go
每日一题:Leetcode59. 螺旋矩阵 II
每日一题:Leetcode59. 螺旋矩阵 II