• no-strings-attached


    0x01

    拿到程序,直接IDA放进去看一下,结果如图:

    我们发现main中有四个函数,我们一个一个进去,经过分析之后,发现authenticate();是关键函数,所以,接下来我们进去看看。

    void authenticate()
    {
      wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch]
      wchar_t *s2; // [esp+801Ch] [ebp-Ch]
    
      s2 = (wchar_t *)decrypt(&s, &dword_8048A90);
      if ( fgetws(ws, 0x2000, stdin) )
      {
        ws[wcslen(ws) - 1] = 0;
        if ( !wcscmp(ws, s2) )
          wprintf(&unk_8048B44);
        else
          wprintf(&unk_8048BA4);
      }
      free(s2);
    }
    

    这里可以看出,关键的地方在

    decrypt(&s, &dword_8048A90);

    所以我们在decrypt结束处下断点,然后观察寄存器的值,这里我们使用gdb,因为这个程序是linux下运行的,所以我们使用gdb

    0x02

    1.打开gdb

    2.向gdb中加载文件

    3.在decrypt()结束处下断(通过IDA我们可以知道结束处的地址为0x08048707)

    4.r 运行

    5.查看寄存器

    6.将寄存器eax中的值直接以字符串形式输出,拿到flag

  • 相关阅读:
    js打印指定元素内容
    c# RedisHelper
    T4生成整理
    T4随记
    c# 文本超长截断
    mysql自动安装教程说明
    完全卸载mysql免安装版
    解决WebClient或HttpWebRequest首次连接缓慢问题
    c# 停靠窗体
    c#透明panel
  • 原文地址:https://www.cnblogs.com/Jleixin/p/13027367.html
Copyright © 2020-2023  润新知