BUU MISC 刷题记录 (一)

[INSHack2019]gflag

题目

知识点:Gcode 3D打印命令

*G0:快速移动
*G1:控制移动  :   坐标轴XYZE移动控制(G0和G1一样),  例子:G0 F2000 X30 Y30 Z30 E3
*G2:顺时针画弧
*G3:逆时针画弧
.....

更多命令可以看:3D打印gcode命令大全及解析
在线解析网站:https://ncviewer.com/
把给出的代码贴进去,点一下plot:

[INSHack2019]Crunchy

题目

def crunchy(n):
    if n < 2: return n
    return 6 * crunchy(n - 1) + crunchy(n - 2)

g = 17665922529512695488143524113273224470194093921285273353477875204196603230641896039854934719468650093602325707751568

print("Your flag is: INSA{%d}"%(crunchy(g)%100000007))

解析

直接运行是不能运行的,会报错(超过最大递归限度),需要把递归改写一下
一种方法是用矩阵乘法来做:

贴上大佬的脚本

def matrix_multiply(mat_a, mat_b, n):
    a, b, c, d = mat_a
    x, y, z, w = mat_b

    return (
        (a * x + b * z) % n,
        (a * y + b * w) % n,
        (c * x + d * z) % n,
        (c * y + d * w) % n,
    )

def matrix_power(A, m, mod):
    if m == 0:
        return [1, 0, 0, 1]
    elif m == 1:
        return A
    else:
        B = A
        n = 2
        while n <= m:
            B = matrix_multiply(B, B, mod)
            n = n*2
        R = matrix_power(A, m-n//2, mod)
        return matrix_multiply(B, R, mod)

F1 = [6, 1,
      1, 0]

g = 17665922529512695488143524113273224470194093921285273353477875204196603230641896039854934719468650093602325707751568

print("INSA{%d}"%matrix_power(F1, g, 100000007)[1])

[INSHack2018]42.tar.xz

题目

This file is very deep. Will you dare dig in it ?
打开是42个压缩包,每层打开都有42个,盲猜要开42层,4242=1.5013093754529657235677197216425e+68,这个数量就很恐怖了,贴上我的垃圾脚本,跑了第一个压缩包磁盘直接爆炸

import lzma
import shutil
import tarfile
import os

def unzx(filename):
    print(filename)
    inputs = lzma.open(filename)
    out = open(filename.split(".")[0]+".tar","wb")
    shutil.copyfileobj(inputs,out)
    out.close()
    inputs.close()
    os.remove(filename)
    

def untar(filename):
    print(filename)
    tar = tarfile.open(filename)
    names = tar.getnames()
    if os.path.isdir(filename):
        pass
    else:
        os.mkdir(filename.split(".")[0]+"/")
    for name in names:
        tar.extract(name,filename.split(".")[0]+"/")
    tar.close()
    os.remove(filename)

def unpack(dirs):
    #print(dirs)
   
    files = os.listdir(dirs)
    #print(files)
    for file in files:
        unzx(dirs+"/"+file)
        untar(dirs+"/"+file.split(".")[0]+".tar")
        unpack(dirs+"/"+file.split(".")[0])


unpack("42")

解压到最后一层每一个文件都有500+mb, 但是居然诡异地找到了flag,在
\buuctf-misc\[INSHack2018]42.tar.xz\tmp\42\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\2\1\flag


大佬的bash脚本

while [ "`find . -type f -name '*.tar.xz' | wc -l`" -gt 0 ]; do find -type f -name "*.tar.xz" -exec tar xf '{}' \; -exec rm -- '{}' \;; done;

速度还比较快,而且没有爆磁盘

[INSHack2018]Spreadshit

用office条件格式,给所有的空格染色,调整一下单元格大小


BUU上提交字母要都改成小写

[INSHack2018]GCorp - Stage

打开
追踪tcp流量
拉到最底下
base64解码
没了

INSHack2018 so deep

用Audacity查看了一下频谱,发现有点模糊的文字,看不清楚,用sonic visualiser查看,
在Layer选项中点击Add Peak Frequency Spectrogram, 调整视图至清晰,发现是flag的前一半

https://blog.csdn.net/qq_36618918/article/details/107912977
用deep sound解密

posted @ 2021-07-16 18:56  云千  阅读(619)  评论(0编辑  收藏  举报