首页 > 其他分享 >[ACTF新生赛2020]rome 1

[ACTF新生赛2020]rome 1

时间:2023-05-03 16:00:16浏览次数:42  
标签:esp int v12 v1 rome ebp result 2020 ACTF

查壳(两个文件,依旧是看内存大的那个文件就行)

32位,进IDA,找主函数:

int func()
{
  int result; // eax
  int v1[4]; // [esp+14h] [ebp-44h]
  unsigned __int8 v2; // [esp+24h] [ebp-34h] BYREF
  unsigned __int8 v3; // [esp+25h] [ebp-33h]
  unsigned __int8 v4; // [esp+26h] [ebp-32h]
  unsigned __int8 v5; // [esp+27h] [ebp-31h]
  unsigned __int8 v6; // [esp+28h] [ebp-30h]
  int v7; // [esp+29h] [ebp-2Fh]
  int v8; // [esp+2Dh] [ebp-2Bh]
  int v9; // [esp+31h] [ebp-27h]
  int v10; // [esp+35h] [ebp-23h]
  unsigned __int8 v11; // [esp+39h] [ebp-1Fh]
  char v12[29]; // [esp+3Bh] [ebp-1Dh] BYREF

  strcpy(v12, "Qsw3sj_lz4_Ujw@l");
  printf("Please input:");
  scanf("%s", &v2);
  result = v2;
  if ( v2 == 65 )
  {
    result = v3;
    if ( v3 == 67 )
    {
      result = v4;
      if ( v4 == 84 )
      {
        result = v5;
        if ( v5 == 70 )
        {
          result = v6;
          if ( v6 == 123 )
          {
            result = v11;
            if ( v11 == 125 )
            {
              v1[0] = v7;
              v1[1] = v8;
              v1[2] = v9;
              v1[3] = v10;
              *(_DWORD *)&v12[17] = 0;
              while ( *(int *)&v12[17] <= 15 )
              {
                if ( *((char *)v1 + *(_DWORD *)&v12[17]) > 64 && *((char *)v1 + *(_DWORD *)&v12[17]) <= 90 )
                  *((_BYTE *)v1 + *(_DWORD *)&v12[17]) = (*((char *)v1 + *(_DWORD *)&v12[17]) - 51) % 26 + 65;
                if ( *((char *)v1 + *(_DWORD *)&v12[17]) > 96 && *((char *)v1 + *(_DWORD *)&v12[17]) <= 122 )
                  *((_BYTE *)v1 + *(_DWORD *)&v12[17]) = (*((char *)v1 + *(_DWORD *)&v12[17]) - 79) % 26 + 97;
                ++*(_DWORD *)&v12[17];
              }
              *(_DWORD *)&v12[17] = 0;
              while ( *(int *)&v12[17] <= 15 )
              {
                result = (unsigned __int8)v12[*(_DWORD *)&v12[17]];
                if ( *((_BYTE *)v1 + *(_DWORD *)&v12[17]) != (_BYTE)result )
                  return result;
                ++*(_DWORD *)&v12[17];
              }
              result = printf("You are correct!");
            }
          }
        }
      }
    }
  }
  return result;
}

很明显,又是得写脚本的一天。

先看正确输出:是flag进行凯撒加密(解密)后与v12对比,如果正确,则是flag反之则不是。v12原型为:“Qsw3sj_lz4_Ujw@l”,看看方法,又是凯撒密码。脚本咯:

int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    string Des = "Qsw3sj_lz4_Ujw@l";
    string flag = "";
    for (int i = 0; i < Des.size(); i++) {
        if((Des[i] >= 'a' && Des[i] <= 'z') ||(Des[i] >= 'A' && Des[i] <= 'Z')){
            //写凯撒的加密方法
            for (int j = 'a'; j <= 'z'; j++) {
                if((j - 79) % 26 + 97 == Des[i]){
                    flag += char(j);
                    break;
                }
            }
            for (int j = 'A'; j <= 'Z'; j++) {
                if((j - 51) % 26 + 65 == Des[i]){
                    flag += char(j);
                    break;
                }
            }
        }else{
            flag += Des[i];
        }
    }
    cout << "flag{" << flag << "}" << endl;
    return 0;
}

得到flag

标签:esp,int,v12,v1,rome,ebp,result,2020,ACTF
From: https://www.cnblogs.com/TFOREVERY/p/17369167.html

相关文章

  • chrome关闭跨域
    目录背景关闭浏览器跨域方法关闭Chrome跨域小结参考背景今天需要在51World编辑平台调试API参数,出现页面跨域错误。本着快速处理原则,直接关闭Chrome的跨域限制,进行调试。关闭浏览器跨域方法AllowCORSChrome插件好久以前尝试是成功,但是这次没有成功,五一加班,不想折腾了.........
  • [ACTF新生赛2020]easyre 1
    下载回来后,有两个文件查那个内存大的就行,上边那个扔着不管就行查壳32位,进IDA,老套路,进主函数int__cdeclmain(intargc,constchar**argv,constchar**envp){_BYTEv4[12];//[esp+12h][ebp-2Eh]BYREF_DWORDv5[3];//[esp+1Eh][ebp-22h]_BYTEv6[5];//......
  • chrome 高cpu占用 性能分析
    VisualStudio性能探查器WindowsPerformanceToolkitPerfView应该只能用于.NET尝试了chrome://tracing/,但是暂时没太看懂里面都是什么意思 搜着搜着发现了一个UIforETW,这个好像是专门用于chrome的EventTracingforWindows(ETW),所以试用了一下msiexec.exe/i"C:\User......
  • prometheus123456
    #catprometheus/prometheus-consul.ymlglobal:scrape_interval:15s#Setthescrapeintervaltoevery15seconds.Defaultisevery1minute.evaluation_interval:15s#Evaluaterulesevery15seconds.Th......
  • [ZJOI2020] 序列 线性规划做法/贪心做法
    线性规划做法同时也作为线性规划对偶的一个小小的学习笔记。以下\(\cdot\)表示点积,\(b,c,x,y\)是行向量。\(A\)是矩阵,对于向量\(u,v\)若\(\foralli,u_i\leqv_i\)则称\(u\leqv\),\(\geq\)同理。线性规划标准型:\[\maxc\cdotx\\s.t.\left\{\begin{aligned}&Ax......
  • 2、go程序接入prometheus
    参考:https://prometheus.io/docs/guides/go-application/go默认基础指标packagemainimport( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp")funcmain(){ http.Handle("/metrics",promhttp.Handler()) http.......
  • Prometheus 监控系统安装
    目录下载启动使用参考Prometheus既是一个时序数据库,又是一个监控系统,更是一套完备的监控生态解决方案。本文简要介绍Prometheus的安装和使用。下载根据系统下载Download版本,并解压tarxvfzprometheus-*.tar.gzcdprometheus-*启动./prometheus--config.file=prometh......
  • (Edge,Chrome)编写扩展应用,替代IE ActiveX插件
    资料来源#这次以Edge作为例子,Chrome其实也差不多Edge扩展应用资料:https://docs.microsoft.com/zh-cn/microsoft-edge/extensions-chromium用到的浏览器Api资料:https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessagehttps://developer......
  • Chrome Kiosk Mode All In One
    ChromeKioskModeAllInOneChrome信息亭KioskMode使浏览器隐藏边框来全屏展示WebApp页面,一般用于商场超市、快餐店等大屏自助点餐场景demoshttps://www.bilibili.com/video/BV1UK4y147uh/?t=146(......
  • Selenium+Java+Chrome进行web自动化实例
    Selenium+Java+Chrome进行web自动化实例   这是我第一次在项目中使用JavaSpring启动,因为我主要使用C#,我需要从blobURL路径读取文件并将一些字符串数据(如密钥)附加到同一个文件中。在我的API下载文件之前流。 以下是我尝试过的方法: FileOutputStream/InputStream:抛......