技术太渣,只做出两道题,总结如下:
1、签到题
从图中可以发现这是一个扁的二维码,我们右键查看图片,进入图片页面,得到图片如下:
http://static2.ichunqiu.com/icq/resources/ctf/download/797356032862EFB26345619606A6DB89.gif
接下来使用图片通道查看神器:stegsolve(在安装java环境下打开)
点击左边箭头,即得正常二维码。扫描后得出答案。
2、re50
下载附件发现后缀中存在.apk,将文件后缀改为.apk,使用apk反编译助手(我用的是Android逆向助手)打开。
选择“dex转jar”,点击“操作”。
之后查看mainActivity函数,发现跳转比较字符串时调用了veryfy()函数,且该函数为本地内置函数
随后我们把apk文件后缀改为.rar,打开压缩包,用ida查看re50.rarlibarmeabi下的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码对照表:
与数字一一对照即得key:flag{paSS_2_two}
下次比赛加油!!!!!!!!!!!!!!!