当前位置:   article > 正文

[ctf.show.reverse] 36D杯 神光_ctfshow神光

ctfshow神光

运行的用ida打开后会看到一个与固定字符串比较的函数

  1. int __cdecl sub_415B10(char *Str1)
  2. {
  3. int result; // eax
  4. int v2; // eax
  5. int v3; // et2
  6. char Str2[20]; // [esp+D0h] [ebp-18h] BYREF
  7. __CheckForDebuggerJustMyCode(&unk_41C032);
  8. strcpy(Str2, "wangzherongyao");
  9. result = j_strcmp(Str1, Str2);
  10. if ( result )
  11. {
  12. dword_41A4E0 = 0;
  13. }
  14. else
  15. {
  16. v2 = rand();
  17. v3 = v2 % 10;
  18. result = v2 / 10;
  19. dword_41A4E0 = v3;
  20. }
  21. return result;
  22. }

这个串也给出了,没有其它输入的部分,说明如果这个不是flag的话(肯定不是)系统会自动给出解密后的flag

然后输入运行一下,发现是乱码,这里找到一块类似加密程序,处理好久发现是个蜜罐,再回到这只有几句的程序

  1. int __cdecl main_0(int argc, const char **argv, const char **envp)
  2. {
  3. char v4; // [esp+0h] [ebp-ECh]
  4. char Str1[24]; // [esp+D0h] [ebp-1Ch] BYREF
  5. __CheckForDebuggerJustMyCode(&unk_41C032);
  6. sub_411406();
  7. while ( 1 )
  8. {
  9. puts_0("请输入key:\n", v4);
  10. scanf("%s", (char)Str1);
  11. sub_4113B1(Str1);
  12. if ( dword_41A4E0 )
  13. break;
  14. puts("系统错误,请再试一次\n");
  15. }
  16. sub_41141A(); <----------把这一句nop后 od可以看到flag
  17. MessageBoxA(0, "认证成功,离flag又近了一步", "恭喜", 0);
  18. sub_4113CF(Str1);
  19. system("pause");
  20. return 0;
  21. }

sub_41141A()这个函数比较可疑,打开看一下,应该是反debug用的,od运行到这里会卡住。进入ida将这个函数nop掉。再用od运行。会直接显示flag

//flag{9969e2ddd64088f71af0caa891b4dc63}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/807578
推荐阅读
相关标签
  

闽ICP备14008679号