作者 by Yichen / 2023-08-11 / 暂无评论 / 20 个足迹
小明这个笨蛋,给文档设置了一个密码,但是他自己却忘记了密码,他知道以下信息:
密码是数学和小写英语、大写英语的随机生成的
hash函数:
输出大小 256 bits 内部大小 256 区块大小 512 长度大小 64 字符尺寸 32
密码:h??vO??0 (?号部分为小明已经忘记的位置)
哈希:b75d1224 ... (后面不记得了...)
flag.docx
题目卡在第一步因为是word没法进行爆破,不会算密码。。。看了wp里的脚本是这样的:
from itertools import product
from string import *
from hashlib import sha256
pop = "b75d1224"
base="h%s%svO%s%s0"
ready = ascii_letters + digits
for i in product(list(ready),repeat=4):
s = base % (i[0],i[1],i[2],i[3])
hash = sha256(s.encode()).hexdigest()
if pop in hash:
print(s)最终会算出两个密码:heZvOpx0,h4evOF90第二个是对的
然后打开word取消掉加密,之前看到过一篇文章,大概是说word和zip的本质差不多,所以将word的后缀改成zip真的找到一张图片
对于这个图片的处理学到了一个新工具cloacked-pixel在kali上基于python2的隐写工具使用方法如下:
加密:
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图片; 运行后会对图像进行分析,将其分割成块,标记每个块的最低有效位
最后在kali运行一下python lsb.py extract 1.png -stego.png 3.txt Welcome_to_NKCTF
密码就是图片上的key
可以得到NKCTF{dc0684dd-5a57-4d47-b9c0-debed0ef28b9}

这张图可以在stegsolve里看一下,r通道无图,猜测为bg通道的lsb隐写,在stegsolve工具里没有提取到,但kali可以,最终官方wp给的是脚本提取,对于脚本还是有些无力,不熟悉库和函数,下面是最终可用的脚本
方法一
from itertools import product
from string import *
from hashlib import sha256
pop = "b75d1224"
base="h%s%svO%s%s0"
ready = ascii_letters + digits
for i in product(list(ready),repeat=4):
s = base % (i[0],i[1],i[2],i[3])
hash = sha256(s.encode()).hexdigest()
if pop in hash:
print(s)最终获得
一个txt文本找到flag
方法二
因为初步判断是lsb隐写所以打开kali使用zsteg -a 文件名 (查看各个通道的lsb)的命令查询
发现b8,b,lsb,Xy通道有倒序的不完整的flag,用zsteg -a 1.bmp -E b8,b,lsb,Xy > flag.txt命令保存为文本再使用strings命令查询可打印字符串获得如图
找到完整flag
独特见解