0x00 新的开始

时隔两年,又来到了熟悉的网鼎杯时间,今年为了zz任务吧,规模搞的很大,一堆凑数的队,实际上真正参加比赛的还是那么几个队,比如我司今年就搞了4个队?

本来准备凑数的,没想到还进了前百,6月会有线下赛,AWDplus赛制,没有AWD经验,估计得找点时间恶补一下了。

闲话不多讲,直接进入正题

0x01 签到题(web)

在game_manager.js里看到p14后的逻辑

直接给p14.php发post,带上自己的token,得到flag

0x02 vulcrack(misc)

下载apk发现是360壳,直接frida一键脱壳,拖出来2m目标dex一个。

拖到jadx里看flag.class

Java代码直接拷出来,字符串替换成base64解码之后的,跑一遍就出来flag

0x03 java(reverse)

下载apk,直接拖到jadx,

开启反混淆,从mainactivity开始逆

往上找

最后是和f2524b进行equals,进来之前做了个base64反推进来的byte

56c0这串是在mo3176计算出来的,跟进去看

这个函数里做了两轮异或

代码拷出来,先执行后面一轮,再执行前面一轮,进行还原

还原出来下面9646那一串,是通过一个aes算法加密出来的

加密方式是aesecb,无iv

Key在之前有aes_check_key!@#

在app 类里做了替换,e替换成o

使用密文和key解密

0x04 Js_on(web)

网站存在弱口令,admin/admin登陆,看到key:xRt*YMDqyCCxYxi9a@LgcGpnmM2X8i&6

抓包看到token

在线解密

试了下注入,发现有过滤,用<>绕过,数据库没找到flag,发现可以用load_file读,写个payload:

admin'/**/an<>d/**/1=if((sel<>ect/**/load_file('/flag')/**/like/**/'flag%'),1,0)#

写个脚本循环跑,得到flag

0x05 后记

本次两个apk的题都比较简单,基础算法逆向和简易脱壳,靠着这两道送分题居然可以沟进前100也是运气比较好吧。

有个powershell的sudo题挺有意思的,基本解题思路是powershell代码反混淆之后里面是个数独,穷举所有解大概100来个,把解的md5做密钥解密flag,当时做的时候网上找的解数独的代码有bug,解出来一堆无效解干扰解题思路了,另外就是在python里直接调用解密算法解不出来,放在powershell里可以秒出,不知道py和ps的加解密库有什么区别TAT。

另外看了青龙组两道题比较有意思的,一个是虚幻2,rgb转二维码,常规操作,不过转完发现不是一般二维码,是用的国产自主产权的汉信码,有意思的是暴力修补空白区域,并不是要完全生成和原码一摸一样的码,而是利用汉信码的纠错功能自动修复。

另一个比较有意思的是未完成的书,第一次在ctf上看到文言文编程,也感觉挺有新意的,今天在看雪看到这题的wp了,也还是挺有意思的。

0x06 参考资料

未完成的书wp:https://bbs.pediy.com/thread-259794.htm

frida-dexdump:https://github.com/hluwa/FRIDA-DEXDump

love loli,love live!