返老还童
-
一拿到apk,先在虚拟机打开看看apk有什么行为。可以看到只有一个校验flag的功能。
-
反编译apk,得到源码,就能看到对flag操作的类。a函数是检查flag的。
-
继续往下看,可以看到a,b处理过后的值最终要传到check_flag.html。
-
所以就进去b看看对flag做了什么操作。(以下提取class b到sublime)。b函数对flag进行了运算。
-
再去check_flag.html看看js代码。处理后是这样的,只有第一个functions有用。
- 写脚本爆破上面的计算:
这个js函数就是求a,b的值。解出:a=91,b=35
。最后将值重新载入,就能得到flag:
d2lu-bmVy-Y7hp-bgtl
至此,分析完成。
总结
之前了解过xman出的题质量都挺高的,这次有几道脑洞题,花了很多时间都没解出来。比如“txt”那道题,因为联系到mobile,我就一直在用手机的九宫格键,这样就是:974856321,提交flag不对,甚至想到在拼音输入法中每个数字对应几个字母还是不对,唯独没有想到是电脑键盘(因为没往电脑那方面想)的九宫格数字:314256987。 而且,这也是我第一次遇到纯数字的flag,一般flag都有规范的,限定长度和形式。 “中二”那道题也已经提取到压缩包了,知道应该有两层加密解密,第一层在第一天就猜到要用QR的hash作为密钥用AES解密二维码扫出来的base64,得到明文就应该是压缩包的解压密码。但是做不出来,于是尝试各种hash,还是解不出来,没想到要用AES的CBC模式填充hash。 正常赛题,每个文件的信息点的转弯不会超过两个,这两道题绕的我很迷糊。 孔雀翎那道出的挺好的,还专门借了朋友废弃的手机来装xpose,IDA也可以调试com.reverse.myapplication了,可惜时间不够了。 个人认为脑洞题可以少出一点,毕竟选拔赛主要的目的是选拔有技术基础的。 最后,还是自己太菜了,寒假好好自学吧,准备一下TCTF,希望不会再被大佬们吊打。