[SWPU2019] Android3

先反编译出java代码查看,发现没有坑,直接调用了库文件里的check

把so文件直接丢到ida中查找check函数,看到

这是说明flag是11位,刚好发现11个ascii码

60,108,51,79,129,56,44,94,84,69,64

这里也有 11个值,拿下来

6,2,5,0,7,3,10,9,1,4,8

往下发现一个判断,令v1=x,v3*v5=y,则有(x^2-y^2)/(x+y)x-y就是对应的data

后面想了半天都不知道如何继续了,因为有个pow不知道如何解

后来再去翻so文件,发现有的so文件大小并不一样,我这个开的是 10kb的,还有个18kb的。。。

把18kb的so文件放入ida,就明了了

看了别人的wp说是取i和i在之前列表里的下标,但是也搞不懂为什么是这样。。问了学re的大佬,也是一知半解。。。

那按照下标的话,就能得到代码:

a = [60,108,51,79,129,56,44,94,84,69,64]
index = [6,2,5,0,7,3,10,9,1,4,8]
res = []
for i in range(len(a)):
    y1 = pow(-1,(index.index(i)+i)%2)
    res.append(chr(a[i]+y1*(index.index(i)+i)))
for v in index:
    print(res[v],end="")

得到结果2019SWPUctf

posted @ 2022-04-04 10:14  WXjzc  阅读(238)  评论(0编辑  收藏  举报