CTF学习之旅

技术太渣,只做出两道题,总结如下:

1、签到题
CTF学习之旅_第1张图片

从图中可以发现这是一个扁的二维码,我们右键查看图片,进入图片页面,得到图片如下:
http://static2.ichunqiu.com/icq/resources/ctf/download/797356032862EFB26345619606A6DB89.gif

CTF学习之旅_第2张图片

接下来使用图片通道查看神器:stegsolve(在安装java环境下打开)
CTF学习之旅_第3张图片

点击左边箭头,即得正常二维码。扫描后得出答案。

2、re50
下载附件发现后缀中存在.apk,将文件后缀改为.apk,使用apk反编译助手(我用的是Android逆向助手)打开。
CTF学习之旅_第4张图片

选择“dex转jar”,点击“操作”。

CTF学习之旅_第5张图片
之后查看mainActivity函数,发现跳转比较字符串时调用了veryfy()函数,且该函数为本地内置函数

随后我们把apk文件后缀改为.rar,打开压缩包,用ida查看re50.rar\lib\armeabi下的libverify_me.so文件。

点击FunctionsWindows下的verify函数,按F5查看c代码:

int __fastcall verify(int a1)
{
  const char *v1; // r0@1
  const char *v2; // r4@1
  size_t v3; // r0@1
  int v4; // r3@1

  v1 = (const char *)(*(int (**)(void))(*(_DWORD *)a1 + 676))();
  v2 = v1;
  v3 = strlen(v1);
  v4 = 0;
  if ( v3 == 16
    && *v2 == 102
    && v2[1] == 108
    && v2[2] == 97
    && v2[3] == 103
    && v2[4] == 123
    && v2[5] == 112
    && v2[6] == 97
    && v2[7] == 83
    && v2[8] == 83
    && v2[9] == 95
    && v2[10] == 50
    && v2[11] == 95
    && v2[12] == 116
    && v2[13] == 119
    && v2[14] == 111 )
    v4 = (unsigned int)(v2[15] - 125) <= 0;
  return v4;
}

目测是将数字转化为ASCII码值,且字符串长度为16,上网找到一张ASCII码对照表:
CTF学习之旅_第6张图片

与数字一一对照即得key:flag{paSS_2_two}

下次比赛加油!!!!!!!!!!!!!!!

你可能感兴趣的:(ctf)