软件系统安全赛初赛misc题-steganography wp
misc-steganography (用虚拟机kali的方法)
一、修复 7z 文件头
python3 -c "d=open('steganography_challenge','rb').read();open('fixed.7z','wb').write(b'\x37\x7a\xbc\xaf'+d[4:])"二、解压 7z 得到 layer2.png
7z x fixed.7z
三、用 zsteg 提取 LSB
zsteg -a layer2.png
zsteg -e "b1,rgb,lsb,xy" layer2.png > lsb.bin
四、提取 ZIP(跳过前4 字节)
dd if=lsb.bin of=outer.zip bs=1 skip=4
五、解压 outer.zip
得到:
flag.zip
pass1.zip ~ pass6.zip
六、CRC32 爆破(Kali 脚本)
新建 crack.py:
python import zlib import string from itertools import product def crack(crc): for s in product(string.printable, repeat=4): s = ''.join(s) if zlib.crc32(s.encode()) & 0xffffffff == crc: return s return None for i in range(1,7): with open(f'pass{i}.zip','rb') as f: crc = int.from_bytes(f.read()[14:18],'little') print(f'pass{i}:', crack(crc))运行:
python3 crack.py
1:pass
2:is
3-6:c1!xxLf%fXYpkaA
拼接得到密码:
pass is c1!xxLf%fXYpkaA
得到 flag.txt
七、运行代码得到flag
text = open('flag.txt', 'r', encoding='utf-8').read() binary = text.replace('\u200b','0').replace('\u200c','1') flag = ''.join( chr(int(binary[i:i+8],2)) for i in range(0,len(binary),8) ) print(flag)得到flag
