BUUCTF-Misc(81-90)

Muneyoshi發表於2024-05-31

從娃娃抓起

image-20240530161824879

image-20240530162115472

第一句話是中文電碼中文電碼查詢 - 中文電碼轉換 - 中文電碼對照表 (bmcx.com)

image-20240530162155777

第二句話是五筆編碼漢字五筆編碼批次查詢:86版五筆編碼、98版五筆編碼、18030版五筆編碼;五筆編碼反查漢字 - 千千秀字 (qqxiuzi.cn)

image-20240530162315992

人工智慧也要從娃娃抓起

image-20240530162621252

flag{3b4b5dccd2c008fe7e2664bd1bc19292}

zip

解壓後很多壓縮包,但是裡面壓縮包加密的data.txt都比較小,都為4位元組,所以我們嘗試

crc32爆破

採用師傅的指令碼

import zipfile
import string
import binascii
import os
filepath=r'D:/EdgeDownload/b2ca8799-13d7-45df-a707-94373bf2800c'
os.chdir(filepath)
def CrackCrc(crc):
    for i in dic:
       for j in dic:
          for k in dic:
             for h in dic:
                s = i + j + k + h
                if crc == (binascii.crc32(s.encode())):
                   f.write(s)
                   return

def CrackZip():
    for i in range(0,68):
       file = 'out'+str(i)+'.zip'
       crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
       CrackCrc(crc)
       print('\r'+"loading:{:%}".format(float((i+1)/68)),end='')

dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt','w')
print("\nCRC32begin")
CrackZip()
print("CRC32finished")
f.close()

得到

image-20240530174445951

base64解密

image-20240530174609421

發現是rar檔案格式

RAR檔案格式學習(瞭解)_rar檔案頭-CSDN部落格

我們在前面補上檔案頭,恢復之後在註釋找到flag

52 61 72 21 1A 07 00

image-20240530174923649

[GUET-CTF2019]zips

沒有啥線索,爆破一下

image-20240530201144063

然後又是一個加密壓縮包,是偽加密

image-20240530202002202

這裡可以看到密碼是時間戳

image-20240530202442273

然後掩碼攻擊

image-20240530202848823

image-20240530202834476

得到flag

image-20240530202918200

UTCTF2020]file header

這道題提示了檔案頭,加上就行

image-20240530203345588

image-20240530203408791

flag{3lit3_h4ck3r}

[XMAN2018排位賽]通行證

base64解密,直接提交不對

image-20240530203910679

然後裡面有{},有可能是柵欄,然後key=5有點像但不是,後面搜了說是加密key=7

image-20240530204343586

然後就是凱撒密碼,key=13

image-20240530204519411

flag{oyay_now_you_get_it}

[WUSTCTF2020]girlfriend

有個音訊檔案,就是莫斯密碼

--- . ... . .. . . . ... . .. . . . .-- . - . ... . ... . ..- . ... . ... . ... . .. . .. . . . ....

解密出來

image-20240530222129324

然後發現猜錯了

不是莫斯,是撥號聲音,按鍵,這次也是學到了

image-20240530222423926

999*666*88*2*777*33*6*999*4*4444*777*555*333*777*444*33*66*3*7777

然後手機調成拼音9鍵,去打

flag{youaremygirlfriends}

[DDCTF2018](╯°□°)╯︵ ┻━┻

參考:

[BUUCTF:[DDCTF2018](╯°□°)╯︵ ┻━┻_ddctf2018╯︵ ┻━┻-CSDN部落格](https://blog.csdn.net/mochu7777777/article/details/105324802)

看了題解,就是字串擷取兩位16進位制->轉10進位制->都減去128為ASCII碼->轉字元

太菜了,我真看不出來,看一下大佬的題解指令碼吧

# -*- coding:utf-8 -*-
# author: mochu7
def hex_str(str):#對字串進行切片操作,每兩位擷取
    hex_str_list=[]
    for i in range(0,len(str)-1,2):
        hex_str=str[i:i+2]
        hex_str_list.append(hex_str)
    print("hex列表:%s\n"%hex_str_list)
    hex_to_str(hex_str_list)

def hex_to_str(hex_str_list):
    int_list=[]
    dec_list=[]
    flag=''
    for i in range(0,len(hex_str_list)):#把16進位制轉化為10進位制
        int_str=int('0x%s'%hex_str_list[i],16)
        int_list.append(int_str)
        dec_list.append(int_str-128)#-128得到正確的ascii碼
    for i in range(0,len(dec_list)):#ascii碼轉化為字串
        flag += chr(dec_list[i])
    print("轉化為十進位制int列表:%s\n"%int_list)
    print("-128得到ASCII十進位制dec列表:%s\n"%dec_list)
    print('最終答案:%s'%flag)

if __name__=='__main__':
    str='d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd'
    print("字串長度:%s"%len(str))
    hex_str(str)

image-20240531173954528

[MRCTF2020]千層套路

參考:

[BUUCTF:MRCTF2020]千層套路-CSDN部落格

第一個加密壓縮包,暴力破解

image-20240531184202120

這邊解了好多,發現都是和檔名一樣,開始指令碼

import os
import zipfile
filepath=r'D:/EdgeDownload/ff'
os.chdir(filepath)
name = '0573'
while True:
    fz = zipfile.ZipFile(name + '.zip', 'r')
    fz.extractall(pwd=bytes(name, 'utf-8'))
    name = fz.filelist[0].filename[0:4]
    fz.close()

得到一個qr.txt

image-20240531192038006

這個是rgb,我們開始指令碼繪圖

from PIL import Image
import os

filepath=r'D:/EdgeDownload/ff/qr'
os.chdir(filepath)
x = y = 200
img = Image.new('RGB',(x,y))
file = open('qr.txt','r')
for width in range(0,x):
    for height in range(0,y):
        line=file.readline()
        line=line.strip()
        line=line.replace('(','')
        line=line.replace(')','')
        rgb = line.split(',')
        img.putpixel((width,height),(int(rgb[0]),int(rgb[1]),int(rgb[2])))
print('繪製完畢')
file.close()
img.save('flag.jpg')

得到一個二維碼,掃一下

image-20240531193452970

得到flag

image-20240531193529501

百裡挑一

因為是一個流量包,我們需要給圖弄出來,所以匯出http格式,好多圖

然後exiftool分析一下,得到一半flag

image-20240531194346877

剩下一半,在tcp流114中

image-20240531194549971

最後拼一下

flag{ae58d0408e26e8f26a3c0589d23edeec}

[SUCTF2018]followme

我直接全部匯出了http的物件

image-20240531200340234

然後搜尋字串,找到flag

image-20240531200922950

flag{password_is_not_weak}