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解密


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM