ahov 发表于 2021-10-24 10:25

BiliBili 1024程序员节 技术对抗赛 逆向 ID-6

本帖最后由 ahov 于 2021-10-24 10:39 编辑

下载地址:https://security.bilibili.com/sec1024/q/test.apk

有没有伙伴能够逆向出解题答案flag的{:1_885:}{:301_995:}

(最好分享一下解题思路?{:301_971:})

Conanbin 发表于 2021-10-24 12:39

在so里,其他题目有头绪吗

if ( *(_DWORD *)res1 == 3553400 && *(unsigned __int16 *)res2 == 57 )
{
    v1 = fopen("/data/2233", "r");
    if ( v1 )
    {
      fclose(v1);
      strcpy((char *)encrypt, "bili_2233_3322");
      strcpy((char *)encrypt2, "bili_3322_2233");
      *(_OWORD *)context.count = xmmword_1F60;
      *(_QWORD *)&context.state = 0x1032547698BADCFELL;
      v2 = __strlen_chk((const char *)encrypt, 0xFuLL);
      EU(&context, encrypt, v2);
      *(_DWORD *)res3 = context.count;
      v24 = context.count;
      v3 = (context.count >> 3) & 0x3F;
      if ( v3 >= 0x38 )
      v4 = 120;
      else
      v4 = 56;
      EU(&context, PADDING, v4 - v3);
      EU(&context, res3, 8u);
      *(_DWORD *)decrypt = context.state;
      *(_OWORD *)v15.count = xmmword_1F60;
      *(_QWORD *)&decrypt = *(_QWORD *)&context.state;
      *(_DWORD *)&decrypt = context.state;
      *(_QWORD *)&v15.state = 0x1032547698BADCFELL;
      v5 = __strlen_chk((const char *)encrypt2, 0xFuLL);
      EU(&v15, encrypt2, v5);
      v6 = (v15.count >> 3) & 0x3F;
      *(_DWORD *)res3 = v15.count;
      v24 = v15.count;
      if ( v6 >= 0x38 )
      v7 = 120;
      else
      v7 = 56;
      EU(&v15, PADDING, v7 - v6);
      EU(&v15, res3, 8u);
      *(_DWORD *)decrypt2 = v15.state;
      *(_QWORD *)&decrypt2 = *(_QWORD *)&v15.state;
      *(_DWORD *)&decrypt2 = v15.state;
      v10 = fopen("/data/2233", "a+");
      if ( v10 )
      {
      for ( i = 0LL; i != 8; ++i )
      {
          ZL7sprintfPcU17pass_object_size1PKcz(res3, v8, v9, decrypt);
          ZL7sprintfPcU17pass_object_size1PKcz(dest, v12, v13, decrypt2);
          fputs((const char *)res3, v10);
          fputs((const char *)dest, v10);
      }
      fwrite("-----------\n", 0xCuLL, 1uLL, v10);

ahov 发表于 2021-10-24 10:53

这个apk有两道逆向题,一个题目ID-5的flag就是516834cc-50e448af-bcf9ed53-9ae4328e

现在这个题目ID-6的,目前都还没人知道了……

ForGot_227 发表于 2021-10-24 11:18

{:1_925:}直接报答案有什么意思

无闻无问 发表于 2021-10-24 11:38

账户密码,先与3异或,然后base64编码,与下面比较…

是这样吗? 要跑码?

73,49,79,122,65,51,89,71,65,117,78,106,78,109,78,122,99,55,89,109,85,61

89, 87, 66, 108, 79, 109, 90, 110, 78, 106, 65, 117, 79, 109, 74, 109, 78, 122, 65, 120, 79, 50, 89, 61

ahov 发表于 2021-10-24 11:43

无闻无问 发表于 2021-10-24 11:38
账户密码,先与3异或,然后base64编码,与下面比较…

是这样吗? 要跑码?


我也发现了,不过这个好像是第五题的关键代码

Conanbin 发表于 2021-10-24 12:24

我用ida 看到里面有些奇怪的函数,感觉和第6题有关

ahov 发表于 2021-10-24 12:31

Conanbin 发表于 2021-10-24 12:24
我用ida 看到里面有些奇怪的函数,感觉和第6题有关

好像在lib-so里面?

ahov 发表于 2021-10-24 12:55

Conanbin 发表于 2021-10-24 12:39
在so里,其他题目有头绪吗

if ( *(_DWORD *)res1 == 3553400 && *(unsigned __in ...

不太有

输出2233
Flag能出来什么东西吗

ahov 发表于 2021-10-24 12:56

6,ida逆向so,会验证abi和系统版本, 改build.prop,ro.product.cpu.abi为x86,ro.build.version.release为9,然后再创建/data/2233,4byte一组变成xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx这样好烦啊,没看懂什么意思
页: [1] 2 3
查看完整版本: BiliBili 1024程序员节 技术对抗赛 逆向 ID-6