首页
社区
课程
招聘
[原创]看雪CTF.TSRC 2018 团队赛 第二题 半加器
2018-12-3 13:12 2883

[原创]看雪CTF.TSRC 2018 团队赛 第二题 半加器

2018-12-3 13:12
2883

看雪CTF.TSRC 2018 团队赛 第二题 半加器

苦看无果。果断通过字符列表中的Please Input:找到如下函数:

int __usercall sub_4A19B0@<eax>(int a1@<xmm0>)
{
  int v2; // [esp+D0h] [ebp-8h]

  sub_48D7B4((int)&unk_5F6007);
  sub_48CD46((int)&unk_5F31E0, (int)"Please Input:");
  sub_48C0EE("%s", &g_input, 30);
  v2 = len((int)&g_input);
  if ( v2 > 30 || v2 < 10 )
  {
    sub_48A6DB("输入错误;");
    exit(0);
  }
  sub_48E5BF((int)g_input_an, 30, (int)&g_input);
  if ( g_input_an[7] != 'A' )
  {
    sub_48A6DB("输入错误;");
    exit(0);
  }
  sub_48D3A4(a1, (int)g_input_an);
  return 0;
}

输入后检查长度在10到30之间,再检查输入第8个字符为A,再进入sub_48D3A4进行编码。

 

sub_48D3A4调用如下函数,替换输入第8个字符,进行异或编码:

int __usercall sub_49DBD0@<eax>(int xmm0_4_0@<xmm0>, char *a1)
{
  int v2; // edx
  int v3; // ecx
  unsigned int i; // [esp+D0h] [ebp-8h]

  sub_48D7B4((int)&unk_5F6007);
  a1[7] = '#';
  for ( i = 0; i < len((int)a1); ++i )
    a1[i] ^= 0x1Fu;
  return sub_48D935(v3, v2, 1, (int)a1, xmm0_4_0);
}

再回溯往下走,又不太好找最终的check。只好通过g_input_an的引用找到如下函数,完成参数a2的异或编码,再与编码后的输入进行比较:

int __userpurge sub_49DC80@<eax>(int a1@<xmm0>, char *a2)
{
  int v2; // edx
  int v3; // ecx
  unsigned int i; // [esp+E8h] [ebp-14h]

  sub_48D7B4((int)&unk_5F6007);
  if ( a2 )
  {
    for ( i = 0; i < len((int)a2); ++i )
      a2[i] ^= 0x1Cu;
    if ( !strcmp((int)a2, (int)g_input_an) )
    {
      sub_48B4AA(a1, (int)&unk_5F31E0, 'o');
      sub_48B4AA(a1, (int)&unk_5F31E0, 'k');
    }
  }
  return sub_48D935(v3, v2, 1, 0, a1);
}

此函数以下函数通过sub_48DACA调用,参数a2也出来了,为invalid argument:

int __usercall sub_49CEB0@<eax>(int a1@<xmm0>)
{
  int v1; // eax
  int v2; // edx
  int v4; // [esp+0h] [ebp-E8h]

  sub_48D7B4((int)&unk_5F6007);
  v1 = sub_48DACA(a1, aInvalidArgumen_1);
  return sub_48D935(v4, v2, 1, v1, a1);
}

反算:

c = 'invalid argument'
f = []]
for i in range(len(c)):
    append(chr(ord(c[i])^0x1c^0x1f))
f[7] = 'A'
print ''.join(f)

最终flag为:jmubojgAbqdvnfmw


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 365
活跃值: (864)
能力值: ( LV9,RANK:186 )
在线值:
发帖
回帖
粉丝
KwaiChing 2018-12-6 01:10
2
0
發錯區了
游客
登录 | 注册 方可回帖
返回