2024中国工业互联网安全大赛智能家电行 业赛道选拔赛初赛

没啥好说的 傻逼赛制2小时,比赛结束就得交wp,这波被队友骂麻了,结束补一下wp,结束还有一小时,一下开两个题我是真绷不住啊,虽然是比较简单,但是被压力上了呜呜呜,我有罪我检讨。。。2/2

0x01 程序逆向分析

程序逻辑还是相当简单的

image-20240715142828934

直接跟一手sub_401AD5函数看加密逻辑就行,经典维吉尼亚加密说是

image-20240715142935319

正常按照程序逻辑逆回去就好了

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
src = "kwam{dGawkqBxuiBlIHNjY3JniCBeZXNzYWjl}"

key = "flag{thisiskey}"
idx=0
key_len = len(key)
for i in range(len(src)):
if idx==key_len:
idx=0
if src[i]>='a' and src[i]<='z':
nb=((ord(src[i])-97)-(ord(key[idx])-97))%26+97
print(chr(nb),end='')
else:
idx=idx-1
print(src[i],end='')
idx = idx+1

#flag{dGhpcyBpcyBhIHNlY3JldCBtZXNzYWdl}

0x02 安卓逆向分析

越做越生气,早知道早点起来帮他们弄了,哭,好jb简单的题啊呜呜

jadx直接看了,先是一个check密码,密码逻辑直接给了,可以直接爆破

image-20240715151222808

上爆破脚本:

1
2
3
4
5
6
7
8
9
10
11
12
table1 = [44, 66, 67, 77, 46, 43, 47, 71, 49, 68, 80, 50, 68, 83, 
51, 49, 50, 68, 58, 56, 61, 53, 70,
57, 58, 79, 59, 78, 66, 67, 89, 68]

for i in range(len(table1)):
for j in range(256):
temp = (j+table1[i])%101
temp = (temp * 2)-i
if(temp==j):
print(chr(j),end='')

#rGF3ryrCpK4qN1rwvShmduTonEnIba6a

还有一层check是在native层的,常规把apk解包了看看so

image-20240715151450155

进来之后逻辑有提示了,说是RC4,然后直接找main,应该是sub_402414

image-20240715151550228

往里面一直跟之后就能找到用于check的密文,继续往里面跟,把密文拿出来就好了,没看见其他有密钥的地方,猜猜都知道,之前爆破出来的密码就是密钥

image-20240715151704362

image-20240715151803807

找个在线网站直接解了

image-20240715151840257

最后直接login就好了

image-20240715151906204