0x00 1024_重新签到

题目下载:戳我

hint.txt:你需要一关一关过,如果你能直接flag,就当我没说过。

level_1.zip是一个加密的压缩包,尝试爆破/伪加密无果。

后来想到其中的内容只有10字节,可以使用crc爆破出文件内容:

(抱歉,我代码写的很没品)

import binascii

dic = '0123456789'
crc= int("0x342F0E5C",16)
for a in dic:
    for b in dic:
        for c in dic:
            for d in dic:
                for e in dic:
                    for f in dic:
                        for g in dic:
                            for h in dic:
                                for i in dic:
                                    for j in dic:
                                        str = a+b+c+d+e+f+g+h+i+j
                                        str_crc = binascii.crc32(str.encode())& 0xffffffff
                                        if (str_crc==crc):
                                            print ("crc1:",str)

运行后得到:0009656856,即文件内容,但是还解不开这个压缩文件。

level_2.jpg:因为是jpg格式的图片且上步得到了疑似密钥的10个数字,考虑使用Steghide工具对其解密。

安装:apt-get install steghide
查看图片中嵌入的文件信息:steghide info [文件名]
隐藏文件:steghide embed -cf [图片文件载体] -ef [待隐藏文件]
提取图片中隐藏的文件:steghide extract -sf [文件名]

使用vim level_3_password.txt命令观察该文件确实无可疑空白字符,排除零宽度字符隐写,也没任何其他思路。

level-3-flag.zip:注释提示“The password is 32 bits.”,联想到哈希,但是最后答案是把“什么呀”进行sha1加密这是真的骚- -。

0x01 1024_兔耳

放大到如图所示程度,为了方便记录我用1表示宽波形,0表示短波形,间隔符用/来表示。手撸了一部分:

太长了,🐎一下出题人师傅的脚本:

import wave
import numpy as np
def openwave(fn=''):
	with wave.open(fn, 'rb') as f:
		params = f.getparams()
		print('params:', params)
		nchannels, sampwidth, framerate, nframes = params[:4]
		strData = f.readframes(nframes)  # 读取音频,字符串格式
		return np.frombuffer(strData, dtype=np.int16).tolist()  # 将字符串转化为int
data=openwave('1.wav')

dictMos = {'.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E',
	'..-.': 'F', '--.': 'G', '....': 'H', '..': 'I', '.---': 'J',
	'-.-': 'K', '.-..': 'L', '--': 'M', '-.': 'N', '---': 'O',
	'.--.': 'P', '--.-': 'Q', '.-.': 'R', '...': 'S', '-': 'T',
	'..-': 'U', '...-': 'V', '.--': 'W', '-..-': 'X', '-.--': 'Y',
	'--..': 'Z', '.----': '1', '..---': '2', '...--': '3', '....-': '4',
	'.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9',
	'-----': '0', '..--..': '?', '-..-.': '/', '-.--.-': '()', '-....-': '-',
	'.-.-.-': '.', '--..--': ',', '.--.-.': '@', '---...': ':', '-.-.-.': ':',
	'-...-': '=', '.----.': "'", '-.-.--': '!', '..--.-': '_', '.-..-.': '"',
	'-.--.': '(', '----.--': '{', '-----.-': '}'
    }

s=''
for i in range(0,len(data),200):
	fft= np.abs(np.fft.fft(data[i:i+200]))
	if fft[14]>5e5 :s+='1'
	else:s+='0'
s=s.replace('1111111100','-').replace('11100','.').replace('000000000000000','/')
print(s)
for i in s.split('/')[:-1]:
	print(dictMos[i],end='')

0x02 1024_非常简单

压缩包爆破得到密码917621,拿到hint.txt:

这是杀手锏
 <oF[m{4O;)UQk-6R?9T13KX7:,Q:+)D_4Hu-=#6ZV(M(2

base92→base64→摩斯→明文(the end)

题目图片可以提取出来压缩包:

txt:佛曰。解出99994433777744644462,手机键盘密码得到zheshmima

利用zheshmima成功解开加密.zip,得到加密的flag.zip和你怕蛇吗.txt。

提示🐍还有密钥那就是Serpent加密了:

使用zuizhongmima解密flag.zip。

0x03 1024_1024zip套娃

  • 第一层:1024.zip,爆破得1420
  • 第二层:2104.zip,爆破得4210
  • 第三层:0412.zip,爆破得2410
  • 第四层:2041.zip,爆破得4021
  • 第五层:4120.zip,爆破得2401
  • ……

密码均由0,1,2,4这几位数组成,可以列个字典。

def listzh(a1,mylist):
    # 递归解法
    if 2 == len(mylist):
        print(a1+mylist[0]+mylist[1])
        print(a1 + mylist[1] + mylist[0])
    else:
        for i,j in enumerate(mylist):
            c = mylist[:]
            c.pop(i)
            listzh(a1+j,c)

mylist=['1','0','2','4']
a = (listzh('',mylist))

写脚本解压压缩包:

import zipfile
import os

# 载入字典文件
f = open("dic.txt")
dic = []
while 1:
    line = f.readline()
    dic.append(line[:-1])
    if not line:
        break
# 最后一个是空的,砍掉
dic = dic[:-1]
filename = '1024.zip'
for j in range(1024):
    zfile = zipfile.ZipFile(filename)
    for i in dic:
        try:
            zfile.extractall(members=zfile.namelist(),pwd=i.encode("utf-8"))
            zfile.close()
            try:
                # 移除解压完毕的文件
                os.remove(filename)
            except OSError as error:
                print(error)
            files = os.listdir()
            for q in files:
                if(q.endswith('.zip') and q!= filename):
                    filename = q
                    break
            break
        except:
            pass
    print("[*]Try to unzip : "+filename)

最后得到加密的4201.zip,密码为0214,解压得到密文。

经过不断的base32/64/hex的处理最终得到一个压缩包,里面是flag图片。

0x04 1024_大威天龙

改高:

找个OCR文字识别:

如是我闻:他根休梭拔游告过金消排信顛祖劫捐息稳想灭七息虚沙兄诵界排闍幽毘殊醯哈及醯麼藝持西央恐奉兄行難亦功者睦胜奉于众老曳難殿親劫慈謹陰故高雙下羅亿特盧彌皂楞游拔夜特經行来慈帝薩施说众定殊姪于西定中豆福盧月謹資号夫未信德夜印六德害寂急贤師拔胜利死下兄數诸茶困夜者困开排界依捐多山廟利忧寫六寂寂幽来解陀月羅先焰尼者信诵瑟輸時利胜善時孫矜數央多時隸便輸空告閦孫孕捐度六持念紛求曰能薩劫孤參困七消宗創心劫急稳除六须急廟婦朋諦多经蒙昼死弟經矜殺修提即婦怖六德宇蒙迦孕者奉真曳資消福金吼夫族排寂資凉曳信資惜妙穆楞實毘花老此栗創孕想西室室濟通雙積廟奉守五羅定未焰福實闍和槃陀孤室毒定孫除隸药足六恐伊胜曳智資殊蘇究奉藥界游實便开以穆施通礙及精下东百树即殊紛實除此造急七蘇楞令根高智孝楞能月诸伊方慈老憐伊盡盡想及蒙哈皂困休在璃解除重室德毘说貧薩东如来廟尼亿诵阿即楞殿朋金廣藐師修说西陀盡须璃休究千能敬宝敬利六急印殺弟實殺灯阿百訶盧哈灯勒告宝夫先慈訶尊舍央難梭进陀夷數故閦如兄曳尼孤哈藥普遮阿提栗實貧濟曳殺号弟友放愛焰陰文時夢昼释六奉百未伊施来姪特宗粟愛安槃及弥七諦琉夫提顛消夫涅謹多方真粟敬鄉隸金知印夫经消琉梭困雙廟经竟乾心究灭印守教幽方智药想恤尊稳孫毘想昼花故者鄉遮消花消陵焰在开众牟戒奉胜倒睦阿心舍橋路貧醯究沙諦室姪众名琉尼闍进刚貧树僧禮怖真信牟五蘇师親阿夷消孝及毒究迦妙念五室利通遮来廟難盧夜方創善说宇在曰通毘實游孤殺在閦中恤急遠普生持捨焰舍孝夷友皂曳虚麼普阿定清究逝故智想羅护妙福舍重惜琉親室令毘訶妙勒多三刚礙息皂寡王空輸彌夢王特守众众遮告忧量息貧未橋药麼朋兄高福刚百謹姪遮時花于故灭創放放毒殊夜如劫親曰亿数施众穆及遠遮尼殊吼困劫清幽释花夢虚遮行舍僧祖即夜西親花死休廟修惜顛北琉及牟謹遮下住蘇殿曳陵亿和姪名金資姪先真亦尼开说和中蒙顛号妙告经以奉夢豆勒寫牟五中央迦積足戒閦涅下奉惜倒勒害牟宇北稳礙央栗遮诸清经經花真昼室室须真槃通參盡蘇量诸师陰瑟诵閦粟排親令根毘戏夢夷輸姪根造戒鄉粟空山閦宗矜首謹沙阿告貧陵月槃守耨紛稳先謹幽寫定百訶能清劫顛妙持特经師依须求逝空能慈雙福尊禮勒虚多普閦说守月过各礙护定薩夜施排親未愛盧护凉貧知千千名夷宗求焰尊謹未六教孝宝弥未安下至福诸便胜勒焰陀号遠穆尊訶度金栗普夫惜者弟彌皂孫除殺量于殺室陵劫盧和安姪死师药北至親灭曰伊说兄遠万夢幽持吼惜藐王粟寡 

佛曰得到:

新佛曰:慧即夷祗色莊修念婆夷吽囉慧吽心提耨修念眾色如嚩阿耨隸我亦隸色陀婆般蜜劫心咤若缽祗訶嚤迦降咒喃塞伏陀彌諸羅願劫斯菩嚩伏所咤迦慧提愍修降伏嚴嚩囉嚩若聞心亦吶嘚吽念諸喃阿空喃嚤嚤耨劫亦嘇提嚴寂薩訶降諦諦祗阿嚤缽塞愍羅心念降彌降諸迦訶叻降波須劫寂夷念僧須塞願嚩阿提夷吽我嚩修隸嚤尊若菩夷兜願哆訶眾斯降宣薩缽耨叻摩是提願咤闍阿空嘚蜜喃所念囉提修吽莊空羅菩諦若蜜耨薩劫是咒陀隸所念缽夷婆愍若訶劫嚩祗婆修迦劫陀聞修心嚴斯愍莊即慧眾所僧提訶嘚耨塞陀陀嚤迦夷諦眾所兜訶嚩夷空降是色諦嘇眾摩愍般僧諸迦即慧摩若即聞阿兜眾迦諦般空摩喃寂摩薩尊摩陀空提咒若嚴陀若塞彌如尊寂吶諸愍嚴咒薩修降塞聞愍願劫亦羅祗蜜塞慧嚴所宣嚴諦隸夷祗聞喼提婆如慧所耨諦提慧隸嚴聞我即菩須空彌缽降般咤伏念訶色諸叻婆斯羅寂囉劫宣耨摩迦莊囉降吶喼尊彌是吽訶夷嚴祗聞劫陀訶阿嚤阿降羅伏兜祗寂摩若喼劫迦薩嘚羅嚤如色蜜彌迦夷吽寂所眾提我眾提婆聞闍夷修提莊尊塞眾迦是慧吶叻喃降所色缽莊婆若菩咒婆念迦吶色尊咤兜即迦陀是波迦空尊慧宣寂吽我是囉修斯蜜喼亦兜薩咤哆囉念即諦吶羅闍色斯喃宣喃如念嘇須婆祗色阿阿即我眾宣囉咒諸我宣心宣叻諸降色訶慧寂嚤囉須薩般隸陀即如摩諦闍婆寂我提念嘚須喼如

新佛曰得到:

熊曰:呋性拙誘囑嗡襲更爾吃覺森物更嘿噔哈咯哞嗄沒象噔吖現取類和眠取果嚁現意嘶嗡註氏哈寶食和既現萌出嚄偶眠性咯哞圖雜咯盜果嗅更堅噤噗咬吃洞哞嘶肉取嘿會唬訴寶呱歡爾喜氏唬洞蜜既常嗷襲擊哞沒爾爾發嚄溫寶有氏肉嗒家象誒常洞嗥怎偶嚁嚄性嘶非嚁洞怎動覺嗒嗒誒眠肉盜啽會爾洞山取訴歡家更出嗒圖更訴訴噗萌註洞破吖和笨堅吖咬吖嘍噗溫人捕嘿呱雜歡嘿食啽性嚁出類蜂吖嘶果山性和性嗚註嚄嗒堅

熊曰得到:

佛又曰:栗伊舍苏谨数陀羯无楞唎南利楞利伊提埵娑卢写俱谨写卢夜谨罚楞羯烁数喝阇阇卢摩哆输穆夜萨孕栗唎地娑嚧利啰钵穆罚参

与佛论禅重制版V2,密钥(箴言)“大威天龙,世尊地藏,般若诸佛,般若巴嘛哄”,得到flag。