WKCTF

Signin

twinhex编码解码,得到base64编码,从格式看出是图⽚转了base64,于是⽤在线Base64转图⽚恢复图⽚,是个⼆维码,扫描得到要发送WKCTF2024到公众号获取flag。

小z的社交网络

题目显示的是AES的ecb加密方式,这里给的是一张ppm图片,图片格式已经损坏 ,根据ElectronicColoringBook可以对其进行恢复

img

python ElectronicColoringBook.py id.ppm --blocksize=3 -p 3 -o 10

img

得知其账号

d3d3LnppbWFibHVlLmxpZmU=

img

继续在微博⾥找,可以看到有微博说明了密码是⼥朋友⽣⽇,再在下⼀条可以看到他⼥朋友的⼩红书

图⽚⽔印,根据⽔印找到其账号,然后在个⼈简介找到⼀个base58编码,解密发现是qq,访问qq可以

看到⽣⽇20000917,那么就可以解开博客了。博客是个提⽰,提⽰要去找github账号。

https://github.com/BeBetterCoder/WKCTF,可以发现这里他进行删除了flag.zip

img

4.根据博客的域名等信息去git搜索ZimaBlue可以找到其账号,有个库叫做WKCTF,在⾥⾯只有

readme,但是在commit⾥可以看到之前删除的⽂件,找到flag.swp,通过在linux下 vim -r FLAG可恢

复⽂件。

不套是你的谎言

附件就一个txt文件,如果做过python逆向的话可以看出这个是pyc的magic头。每一个magic头对应相应的python小版本。因为没有别的信息,因此考虑先把每个hex转成python小版本试试看。关于py版本和magic的关系网上可以找到,reverse过程的脚本如下:

如果取每个python小版本的数字那刚好就是0-9,因此考虑这是十进制。连起来转int再转bytes可以看出是zip文件。这个zip是伪加密,因此改一下两处标志位可以正常解压。

from Crypto.Util.number import *

def reverse_magic(magic_number):
tmp = int(magic_number[2:],16)
tmp = long_to_bytes(tmp)
number = int.from_bytes(tmp[:2],'little')
return number

PYTHON_MAGIC = {

# Python 3
3000: (3, 0),
3010: (3, 0),
3020: (3, 0),
3030: (3, 0),
3040: (3, 0),
3050: (3, 0),
3060: (3, 0),
3061: (3, 0),
3071: (3, 0),
3081: (3, 0),
3091: (3, 0),
3101: (3, 0),
3103: (3, 0),
3111: (3, 0), # a4
3131: (3, 0), # a5

# Python 3.1
3141: (3, 1), # a0
3151: (3, 1), # a0

# Python 3.2
3160: (3, 2), # a0
3170: (3, 2), # a1
3180: (3, 2), # a2

# Python 3.3
3190: (3, 3), # a0
3200: (3, 3), # a0
3220: (3, 3), # a1
3230: (3, 3), # a4

# Python 3.4
3250: (3, 4), # a1
3260: (3, 4), # a1
3270: (3, 4), # a1
3280: (3, 4), # a1
3290: (3, 4), # a4
3300: (3, 4), # a4
3310: (3, 4), # rc2

# Python 3.5
3320: (3, 5), # a0
3330: (3, 5), # b1
3340: (3, 5), # b2
3350: (3, 5), # b2
3351: (3, 5), # 3.5.2

# Python 3.6
3360: (3, 6), # a0
3361: (3, 6), # a0
3370: (3, 6), # a1
3371: (3, 6), # a1
3372: (3, 6), # a1
3373: (3, 6), # b1
3375: (3, 6), # b1
3376: (3, 6), # b1
3377: (3, 6), # b1
3378: (3, 6), # b2
3379: (3, 6), # rc1

# Python 3.7
3390: (3, 7), # a1
3391: (3, 7), # a2
3392: (3, 7), # a4
3393: (3, 7), # b1
3394: (3, 7), # b5

# Python 3.8
3400: (3, 8), # a1
3401: (3, 8), # a1
3410: (3, 8), # a1
3411: (3, 8), # b2
3412: (3, 8), # b2
3413: (3, 8), # b4

# Python 3.9
3420: (3, 9), # a0
3421: (3, 9), # a0
3422: (3, 9), # a0
3423: (3, 9), # a2
3424: (3, 9), # a2
3425: (3, 9), # a2
}

res = ''
with open('magic.txt','r') as f:
for i in range(807):
magic_number = f.readline().strip()
number = reverse_magic(magic_number)
res = res + str(PYTHON_MAGIC[number][1])
print(res)
print(long_to_bytes(int(res)))

打开得到的信息是flask-session,需要去解密,并且提示了密钥为弱口令。github上可以找到工具flask-session-cookie-manager,因为要爆破,所以搞个shell脚本:

#!/bin/bash
while read line
do
echo $line
python3 flask_session_cookie_manager3.py decode -s $line -c 'eyJhbGdvcml0aG0iOiJkZXMiLCJmbGFnIjoiVW5BbVBWWTRhdCt2bkJqellPNytUZEZSMmZEYnhScytqQzdsMWt2b2hUMFp4clBDOEJUTWJBPT0ifQ.ZkyTwA.KPlAnhfBH8qMClLyoP6yboafHyw'
done < top1000.txt

爆破得到:

12312312

{‘algorithm’: ‘des’, ‘flag’: ‘UnAmPVY4at+vnBjzYO7+TdFR2fDbxRs+jC7l1kvohT0ZxrPC8BTMbA==’}

显然在线网站解des即可,密钥就是12312312

在线网站:DES在线解密 DES在线加密 des hex - The X 在线工具 (the-x.cn)

WKCTF{N0w_u_Know_th3_fl4sk_Sess1on}