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