首页 > 编程知识 正文

ctf训练,ctf训练营

时间:2023-05-04 07:02:48 阅读:261783 作者:4295

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

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}

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。