三道MISC的writeup

開心消消樂a發表於2022-12-08

(1)背時

描述:腐爛了,變異了,太背時了......

附件為一個壓縮包

解題思路:

1.開啟壓縮包,發現有一個描述:v(51wA:I7uABi#Bx(T
image
2.將v(51wA:I7uABi#Bx(T進行Z85解密為c3npr_@aq_y0ir。

3.加密的lsb隱寫,利用cloacked-pixel工具包,發現密碼不正確。

4.各種嘗試,將c3npr_@aq_y0ir進行rot13編碼為p3ace_@nd_l0ve

5.使用cloacked-pixel解密,1.txt中輸出flag。
image
cloacked-pixel使用
加密:
python lsb.py hide big.png 1.txt 123456
ps: hide:表示加密模式; big.png:待加密的png圖片; 1.txt:存放payload; 123456:加密的密碼
解密:
python lsb.py extract big.png-stego.png 3.txt 123456
ps: extract:表示解密模式; big.png-stego.png:待解密的png圖片; 3.txt:存放匯出的payload; 123456:解密密碼
分析:
python lsb.py analyse big.png-stego.png
ps: analyse:表示分析模式; big.png-stego.png:待分析的png圖片; 執行後會對影像進行分析,將其分割成塊,標記每個塊的最低有效位

參考原文連結:https://blog.csdn.net/m0_54015794/article/details/112285451

(2)EzMisc

描述為好玩的圖片

附件是一個很大的圖片,上面有好多畫素點

解題思路:

1.圖片用photoshop開啟,可以看到很清晰的畫素點
2.圖片放大之後,記錄左上角和右下角畫素點的座標
image
image

(5.84x9.13+93.16x56.90)
3.計算每兩個畫素點之間的寬度間隔和高度間隔(1.18x2.27)
4.利用指令碼提取畫素點

點選檢視程式碼
import os
import re
import cv2
import argparse
import itertools
import numpy as np


parser = argparse.ArgumentParser()
parser.add_argument('-f', type=str, default=None, required=True,
                    help='輸入檔名稱')
parser.add_argument('-p', type=str, default=None, required=True,
                    help='輸入左上頂點和右下頂點座標 (如:220x344+3520x2150)')
parser.add_argument('-n', type=str, default=None, required=True,
                    help='輸入寬度間隔和高度間隔 (如:44x86)')
args  = parser.parse_args()

if __name__ == '__main__':
    if re.search(r"^\d{1,}x\d{1,}\+\d{1,}x\d{1,}$", args.p) and re.search(r"^\d{1,}x\d{1,}$", args.n):
        x1, y1 = map(lambda x: int(x), args.p.split("+")[0].split("x"))
        x2, y2 = map(lambda x: int(x), args.p.split("+")[1].split("x"))
        width, height = map(lambda x: int(x), args.n.split("x"))

        img_path = os.path.abspath(args.f)
        file_name = img_path.split("\\")[-1]

        img = cv2.imread(img_path, cv2.IMREAD_COLOR)
        row, col = img.shape[:2]

        r, c = len(range(y1, y2 + 1, height)), len(range(x1, x2 + 1, width))
        new_img = np.zeros(shape=(r, c, 3))
        for y, x in itertools.product(range(r), range(c)):
            new_img[y, x] = img[y1 + y * height, x1 + x * width]

        cv2.imwrite(f"{file_name}", new_img)
        print("已儲存到執行目錄中...")
    else:
        print("引數-p或引數-n, 輸入錯誤!")


image
5.生成的圖片由好多顏色組成,piet編碼線上解碼可得
image
參考原文連結:https://blog.csdn.net/qq_47875210/article/details/128173378?csdn_share_tail={"type"%3A"blog"%2C"rType"%3A"article"%2C"rId"%3A"128173378"%2C"source"%3A"qq_47875210"}

(3)mini

題目描述:一個迷你檔案是不是缺少什麼(flag均為小寫)

附件為一個壓縮包

解題思路:

1.開啟壓縮包為一個沒有字尾名的檔案,放入HxD中檢視沒有檔案頭,27 1C前面新增37 7A BC AF為7Z的檔案頭
image

2.新增檔案字尾7Z,解壓得到加密的flag.docx和pw.txt
3.檢視pw.txt,可知word密碼為6位,且為純小寫字母
image
4.直接用kali自帶john獲取docx文件hash值
image
然後利用hashcat進行破解
image
-a 3 為暴力破解的掩碼方式,-m 9400為加密檔案型別。-h可以獲取幫助檢視命令。
image

當狀態為Cracked,可以透過剛才的命令後面加上--show,來檢視密碼,這裡為whljwa。

5.開啟檔案,發現是base64加密的密文,base64解密並轉換為png圖片
image

6.題目中說,flag全為小寫,全轉換為小寫即得flag。