文件隐写(二)
BUUCTF:梅花香之苦寒来
属性提示“会画图吗”,猜测要使用pillow库
记事本打开,文件存在大量十六进制数据。
把十六进制转为字符串
#!/usr/bin/env python3 f = open("test.txt", "r") f2 = open("asc.txt", "w") s = f.read() for i in range(0, len(s), 2): f2.write(chr(int(s[i:i+2], 16)))
得到一堆坐标点
结合“会画图吗”的提示,取这些像素,重新生成一张图片。
#!/usr/bin/env python3
from PIL import Image, ImageDraw
#创建一个280 * 280的画布,背景全白
im = Image.new('RGB', (280, 280), (255, 255, 255))
#创建一只画笔
draw = ImageDraw.Draw(im)
#获取每个像素点
f = open("asc.txt", "r")
line = f.readline()
while line:
xy = line.strip('\n').strip('(').strip(')').split(',')
width = int(xy[0])
height = int(xy[1])
#为这个像素点涂上黑色
draw.point((width, height), fill=(0, 0, 0))
line = f.readline()
im.show()
扫码得到flag。
steag 300
得到一个音频文件,Audacity打开,发现是曼彻斯特编码
由低到高跳变为0,由高到低跳变为1
根据跳变规律得到
二进制 十进制 ascii字符
01100010 98 b 01100001 97 a 01101011 107 k 01100100 100 d 01101111 111 o 01110010 114 r
欢迎来到地狱
题目:http://ctf5.shiyanbar.com/stega/hell/欢迎来到地狱.zip
hxd打开“地狱伊始.jpg”,文件尾为FFD9,因此文件为jpeg类型
把文件头改成FFD8,另存为.jpeg文件。
获取邪恶资源(不是)https://pan.baidu.com/s/1i49Jhlj,得到一个音频文件。
Audacity打开,查看波形图,像是摩尔斯密码。
解码得到KEYLETUSGO。
“第二层地狱.docx”密码为LETUSGO,输入密码。
docx包含一张哈士奇图片。查看docx有没有隐藏文字:全选—右键—字体—取消"隐藏"。发现提示:image steganography。
把哈士奇图片取出来,放入stegsolve分析,尝试颜色通道、LSB、Stereogram Solver没有任何发现。
只能看write up,write up放到一个在线网站进行解析:http://www.atool.org/steganography.php,得到key{you are in finally hell now}
下一关,输入解压密码"you are in finally hell now"成功解压"快到终点了.zip"。
"最后一层地狱.txt"包含一段二进制串,转为字符串。
s = "01110010011101010110111101101011011011110111010101101100011010010110111001100111"
"".join([chr(int(s[i:i+8],2)) for i in range(0, len(s), 8)])
返回'ruokouling',弱口令?那就是要把"地狱大门.jpg"改成压缩包格式咯。使用hxd修改文件头为504b0304,改成zip文件。
爆破zip:ARCHPR 字典爆破,字典选用rockyou.txt。这个字典kali就有自带的。
爆破出密码Password,使用密码解压zip,得到小姐姐.txt。
凯撒+??+base64,中间经过什么加密?还得看write up。好吧,是rabbit。
所以还原flag流程就清晰了。base64,rabbit,凯撒按顺序转换。