长城杯flag保熟

flag保熟吗?

一个压缩包 解压的到两张图和加密的包

图的末尾有额外的数据是个rar的包 提取出来解压缩 然后From Hexdump
得到如下内容

b1.PNG

前16个字符为Vm0wd2QyUXlVWGx
把原本的压缩包进行提取拿到一个password.xls 打开

b2.PNG

并不是按照横着或者竖着读取的 按照希尔伯特曲线的样子进行读取 (比赛那会就到这不会写脚本了 (;′⌒`))

b3.png

上脚本

1
2
3
4
5
6
7
8
9
10
11
import numpy as np
from hilbertcurve.hilbertcurve import HilbertCurve
import pandas as pd
arr = pd.read_excel('./password.xls',header=None)

hilbert_curve = HilbertCurve(17, 2) #这边这个十七按之前理解强网杯三体那题表格是256*256 2^8=256 应该是8才对,但是8生成的数据等号没有都在末尾
s = ''
for i in range(np.size(arr)):
[x,y] = hilbert_curve.point_from_distance(i)
s += str(arr[y][x])
print(s)

生成的数据另存为文本文档 (先把末尾的等号删的只剩两个)

然后解base64

1
2
3
4
5
6
with open("flag.txt",'r') as f:
a = f.read()
import base64
while True:
a = base64.b64decode(a)
print(a)

b4.PNG

得到压缩包密码 flag.php打开一堆的brain fuck 但是正常网站解密一直error
这个是brainfuck 的栈还是什么的
https://www.nayuki.io/page/brainfuck-interpreter-javascript 可以观察brainfuck的栈,将整⼀个brainfuck全都扔进去。

b7.PNG

b6.PNG

数字提取出来然后十进制转ascii
u o z t { S r R y v i g _ X f i e v _ 1 H _ 4 _ e e 0 m w v i u f ! _ x f i e v } e r r o r

交给cyber chief自动识别 然后就拿到flag了

b8.PNG