技术太渣,只做出两道题,总结如下:
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.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码对照表:
与数字一一对照即得key:flag{paSS_2_two}
下次比赛加油!!!!!!!!!!!!!!!