使用APKIDE打开apk文件,查看java源码,找到主类:
经过分析发现是异或,我们就去找这两个常数:
直接编写脚本进行处理:
s = "X
使用APKIDE打开apk文件,我们发现这里多了一个libc的文件夹,libc好像是什么函数动态链接库
查看一下,里面好像有个什么解密的????
先不管,继续往下走~~
主函数里面没看出什么鬼东西,不过发现了一个类中有一个特殊的字符串,需要解密啥的:
看见import com.tencent.testvuln.c.Encryto;,直接进入其中:
发现好熟悉,就显示我们刚刚在libc中看见的那个东西???一个解密的函数???
直接是看libc中的这个文件,直接解压apk2,找到libc中的这个文件
.os文件直接使用ida打开,发现有一个encode函数,直接查看伪代码:
根据名字感觉是AES加密,不过AES需要密钥,我们可以看见上面有一串字符串:thisisatestkey==
猜测这就是密钥,试试:
好像就是,,,,提交正确,,,,
说实话这里面的函数完全没看懂,,,全靠猜,,
一脸懵逼
首先我们使用APKIDE打开apk文件,并且查看java源码,找到主类:
很明显看出有比较,应该是我们输入的字符串进行base64加密之后
与5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs=进行比较
所以我们需要对这个字符串进行base64解密,但是我们去解密会发现错误
所以我们去查看一下码表
编写脚本查看一下:
a = [118, 119, 120, 114, 115, 116, 117, 111, 112, 113, 51, 52, 53, 54,
55, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 121, 122, 48, 49, 50, 80,
81, 82, 83, 84, 75, 76, 77, 78, 79, 90, 97, 98, 99, 100, 85, 86, 87,
88, 89, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 56, 57, 43, 47]
flag = ""
for i in a:
flag += chr(i);
print(flag)
ok,码表不同,所以需要使用另外的base64解密脚本
这里我已经写好了,就直接使用python编写base64加解密脚本(可变换码表)
得到运行结果:
裹上flag{}提交正确