2021年12月 Vivo千镜杯回顾

感觉人太菜了,只做了一道签到的Mobile和一道流量分析

如果还有时间的话,再把另外一道Mobile拿出来复现

vivoNeedyou

打完比赛后,当作西理工的校赛出掉了

题解见

西理工网安小组第二次校赛题解

黑客入侵

流量分析题,上来一个txt的说明

image.png

打开祖传的wireshark

Snipaste_2022-01-01_11-43-14.png

webshell一般用post请求上传,先过滤

image.png

tlswslhaoev4lva.php

相当可疑

然而我不熟悉webshell,只能百度大法好

然后我就找到了这道这里

https://zhuanlan.zhihu.com/p/429696539

一模一样!!!

大佬说:“这个特征应该是godzilla,接下来计算一下md5就能得出flag了~”

flag{fe7c3416a2ace0d97e4029e77368c5ab}

不知道是从哪个题库里出来的题目

鹤林玉露

赛后2022年用GDA+frida复现的题目

image-20220209170021733.png

静态调试追下去,经验不足,有被吓到,都是奇奇怪怪的加密函数

image-20220209170244818.png

实际动态调试(Frida)发现,getIVFromString()和getKeyFromString()全部是木大的东西(字符转byte),this.reset()下去全部木大,重心现在来到crypto函数上

image-20220209170653960.png

这个keystream看起来很吓人

image-20220209170754061.png

然而也是吓唬人的,每次出来的结果基本固定,所以没什么好研究的

image-20220209170932338.png

大于16位的话,会多执行一次循环

image-20220209171055293.png

这就没问题了,加密过程是先RC4后base64,解密只需反向即可

import base64
from Crypto.Cipher import ARC4
a=[39,-6,93,120,32,120,37,70,93,-48,76,37,-107,-69,-56,7,75,13,95,-63,61,-19,-28,57,-115,-84,73,38,60,-123,-36,61]
d=base64.b64decode("3y7/5zbYyaDBe/eYNWspKr+zdhPgR14H")
l=[]
for i in d:
    l.append(i)
print(l)

key = b"qwert"
cipher = ARC4.new(key)
l1=cipher.decrypt(d)
x=[]
for i in l1:
    x.append(i)
print(x)

s=""
for i in range(24):
    e=x[i]^a[i]
    if(e<0):
         e=256+e #firda会返回有符号的数,然而python的chr只认无符号,需要加个转换
    s+=chr(e)

print(s)

flag:

welcome to seclover!

image-20220209164533363.png

总结

传统逆向真的玩不了了,赶紧转Web和Misc还来的及

一连几场CTF下来,做的全是签到题,还要加油