1.SAJOの奇妙冒险(一) 幻影之血

解压附件,由于第一题比较简单,打开辣鸡题目检测器

misc-1.png

得到flag{hello,ctfer}

2.SAJOの奇妙冒险(二) 战斗潮流

解压附件,得到一张图片,国际惯例,binwalk跑一下

misc-8.png

发现文件有点多,foremost拆开

misc-9.png

多出来一个00001016.png和一个00001805.zip,其中压缩包需要密码。

故猜测密码存在于多出来的那张图片中,隐写检查一下

misc-10.png

发现base64编码,猜测是zip的解压密码

misc-11.png

Url解码得到flag{ctfer,congratulations}

3.SAJOの奇妙冒险(四) 疯狂钻石

解压附件,得到一个加密的压缩包与一张图片

misc-6.png

然后打开压缩包发现有份同样的文件,压缩hint.png,发现二者CRC32值相同,考虑明文攻击

misc-7.png

由于我Windows下的ARCHPR的明文攻击好像出了点问题,转战Linux

root@kali:~/wp# ls
flag.zip  hint.png
root@kali:~/wp# zip -r hint.zip hint.png 
  adding: hint.png (deflated 22%)
root@kali:~/wp# pkcrack -C flag.zip -c hint.png -P hint.zip -p hint.png -d out.zip
Files read. Starting stage 1 on Sat Oct 26 21:51:08 2019
Generating 1st generation of possible key2_16071 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Done. Left with 1301 possible Values. bestOffset is 24.
Stage 1 completed. Starting stage 2 on Sat Oct 26 21:51:19 2019
Ta-daaaaa! key0=83158dc0, key1=d6ada718, key2=9f5aa4a9
Probabilistic test succeeded for 16052 bytes.
Strange... had a false hit.
Strange... had a false hit.
Strange... had a false hit.
Strange... had a false hit.
Strange... had a false hit.
Stage 2 completed. Starting zipdecrypt on Sat Oct 26 21:51:48 2019
Decrypting hint.png (1d3025a423dfae36093def1c)... OK!
Decrypting flag.txt (15d9c7a80b9ad4e8a074771f)... OK!
Finished on Sat Oct 26 21:51:48 2019
root@kali:~/wp# unzip out.zip 
Archive:  out.zip
replace hint.png? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: hint.png                
 extracting: flag.txt                
root@kali:~/wp# cat ./flag.txt 
flag{a_pure_zip}
root@kali:~/wp# 

成功拿到flag{a_pure_zip}

4.SAJOの奇妙冒险(五) 黄金之风1

下载flag.zip,解压几次发现似乎是无限循环???

打开辣鸡题目检测器

misc-3.png

得到flag{easy_script}

5.SAJOの奇妙冒险(六) 黄金之风2

下载附件,发现和上一题有些一样,唯一区别是每层压缩包多了密码

misc-12.png

解压一层,并将flag里的flag.zip复制为当前文件夹的tflag.zip,编写脚本

import os
import zipfile

fn = 'tflag.zip'

i=0
dbg=0

while True:
    dbg+=1
    z=zipfile.ZipFile(fn)
    if 'flag/flag.zip' in z.namelist():
        i+=1
        p=open('flag/hint.txt','r').read().split(' ')[4].split('=')[0]
        print 'Round',str(i),': ',p,'->',eval(p)
        z.extractall(pwd=str(eval(p)).encode())
        os.system('mv flag/flag.zip tflag.zip')
    else:
        print 'It seems down'
        break

经过漫长的等待...

➜ flag ls
flag.txt  hint.txt  useless.png
➜ flag cat flag.txt 
flag{enjoy_the_coding_time}
➜ flag 

6.中国移动流量包5元30MB

解压附件,得到wireshark2.pcapng,改后缀为zip解压,得到wireshark2_flag.txt

打开,得到SouthCTF{Congratulations!!!Wireshark_is_interesting}

7.豆破苍穹 (一)

题目提示与时间戳有关,于是进行掩码攻击

misc-4.png

过了两秒

misc-5.png

解压,得flag{d9832a587d8a4de1e69c94e1d907d421}

8.豆破苍穹 (二)

打开附件

# encoding: utf-8
from secret import flag, key


def encrypt(flag, key):
    r = ""
    for i in flag:
        r += chr((ord(i) + key) % 128)
    return r


print encrypt(flag, key).encode("base64")

# output:d31yeAxIQUZJSENDRHNEQUFHSUpCREp1c0F1SXVGdkdBR0J3Qw4=

分析代码,反写解密代码

import base64
douout = 'd31yeAxIQUZJSENDRHNEQUFHSUpCREp1c0F1SXVGdkdBR0J3Qw4='
inp = base64.b64decode(douout).decode()

for key in range(33):
    out = []
    for i in inp:
        if ord(i) <= 32:
            i = chr(ord(i) + 128)
        out.append(chr(ord(i) - key))
    print(''.join(out))

运行

misc-2.png

得到flag{70587223b300689139db0d8d5e6061f2}

9.可恶的狗海豹

由于运维度假,此网站无法访问,开放之时补上

得到flag{}

10.Py_sandbox

由于运维度假,此网站无法访问,flag我忘了

经过尝试,发现import被过滤,但eval可以使用

构造payloadeval('__tropmi__'[::-1])('os').popen('cat flag').read()

好像是这样我也记不清了,毕竟现在没环境

得到flag{}

Last modification:March 29th, 2020 at 09:00 am