解压得到三个文件,其中word文档和压缩文件是加密的
直接打开图片
提示不支持此格式,猜测应该是头文件损坏,用WinHex打开修复头文件:
JPEG文件的前12个字节是:FF D8 FF E0 00 10 4A 46 49 46 00 01 (JPEG文件格式详解)
修复后打开有一个网盘地址,下载下来一个 “地狱之声.wav”
没有其他密码不是MP3stego隐写,所以用Audacity打开,转换为频谱图,看到了摩斯电码
得到摩斯电码 (-.- . -.-- .-.. . - ..- ... --. ---),去解密:用"/"反斜杠代替空格空字符
用密码letusgo打开word文档,经典的word隐写,选项->视图->勾选隐藏文字。
得到一个密码image steganography,用这个密码去打开压缩包,结果试了好几次不对
百度之,是个图片隐写工具(在线地址),把word里的哈士奇图片另存出来,解密
用密码you are in finally hell now解压缩包,有一个图片和一个txt文档里边有一堆二进制数
八位一组隔开,二进制转ASCII,得到一个字符串ruokouling应该是密码
那么图片可能是个图种,里边有压缩包,binwalk+foremost搞一下
用上边得到的字符串去解密压缩包,失败,仔细一读拼音是"弱口令",爆破
得到密码Password
打开压缩包中的文本文档
根据内容猜测是base64编码和Rabbit(兔子)密码、凯撒密码
先base64解码,得到一个兔子密码,和base64编码很像
(U2FsdGVkX19pDorZ2hTP+5w0zSA9bXhVezJy2umFTSp6PdN6zPKCMA==)
然后Rabbit解密,得到 fxbqrwrvnwmngrjxsrnsrnhx
凯撒密码解密 :得到flag{woshinimendexiaojiejieyo}
下载到一个jpg图片,binwalk分析一下
发现里面包含两个zip文件,一个套一个
直接binwalk -e 分解出来,得到一个4C68.zip,里边有个asd文件夹
(tips:如果binwalk分离出的图片总是0字节,请下载最新版,Github地址)
文件夹里还有俩文件:
其中qwe.zip里有个flag.txt,应该是最后的flag,但是加密了
把asd文件夹拖出来,提示加密了
不会吧,这样就没法解了啊,我刚才都进去文件夹了啊
猜测是zip伪加密(关于zip伪加密),WinHex查看修改全局标志位,一顿操作后~
解压提示压缩文件已损坏,应该是改多了把压缩文件损坏了,但是没关系,因为我们已经得到了里边的图片
从之前没损坏的4C68.zip里边可以把qwe.zip拖出来
那么现在我们又两个文件
1.一个包含flag的加密的qwe.zip压缩包
2.一张jpg图片
这里考察的是对常见隐写工具的应用,相关内容点击这
steghide extract -sf good.jpg #解密出来,得到一个ko.txt文本
打开查看得到压缩包密码
用这个密码打开压缩包里的flag.txt
下载图片binwalk分析发现包含一个zip
binwalk -e 分离出来
压缩包有密码,文件名(1111110000000000)是压缩包的二进制密码,转换成16进制,得到压缩包密码FC00
解开压缩包得到一张JPEG图片,strings 分析发现一串base64字符串
base64解密
是一串摩斯电码,接着解密摩斯电码,得到一串MD5加密的字符串:7a57a5a743894a0e
解密MD5得到最终flag
binwalk 分析没结果
MP3Stego解密同样无果,题目没给出其它文件和密码只能不带密码解密
拉进Audacity
看上去是二进制波形隐写,查资料得知
这样的表示0
这样的表示1
得到二进制数字:01100010 01100001 01101011 01100100 01101111 01110010
八位一组隔开,二进制转ASCII,得到flag(MD5加密后为最后flag)
用binwalk和WinHex等工具查看一下没什么结果
用StegSlove查看,最低为三个色道有信息,看一下数据,得到flag(这是一道LSB隐写)
下载得到一个*.img镜像文件,binwalk分析发现里边有图像
binwalk -e分离出一个masked_key.png图像
用WINHEX打开,前8字节与正常的PNG文件头进行异或
Masked: 7688 B1A7 0D1A 504C
PNG: 8950 4E47 0D0A 1A0A
XOR: FFD8 FFE0 0010 4A46
结果在文件末尾发现该串
使用前64字节对文件进行循环异或加密
mask_in = open('masked_key.png','rb')
key = bytearray(mask_in.read(983040-64)) # 读取除文件头64字节外的所有字节
mask= bytearray(mask_in.read(64)) # 以头64字节作为异或密钥
for x in range(983040-64):
key[x] ^= mask[x%64]
key_out = open('unmasked_key.png','wb')
key_out.write(key) key_out.close()
这题重点考察图像处理,实验吧评论处有人给出了python2.x版本的代码
#coding:utf-8
from PIL import Image
lena = Image.open('Lena.png')
b0 = '' #将像素点弄为0,1代码
bnum = 0
width,height = lena.size
for x in xrange(width):
for y in xrange(height):
if lena.getpixel((x,y)) != (255,255,0) : #要求不是黄色(即题目说的心中无码的意思)
if (lena.getpixel((x,y))[2] & 0x01) :
b0 += '\x00\x00\x00'
else:
b0 += '\xff\xff\xff'
bnum += 1
im = Image.frombuffer('RGB', (300,300),b0)
im.save('1.png')
生成一个二维码图片,去在线解密二维码
解密得到一串Brainfuck-> 解密 ->Base64->解密->flag
下载得到一张 123456.jpg 图片,题目为刷新 刷新 再刷新~~多么明显的提示啊
git clone https://github.com/matthewgao/F5-steganography
cd F5-steganography
java Extract 123456.jpg -p 123456
得到output.txt,打开里边就是flag
网上有wp说扔进WinHex找flag,我这不知为何打不开虚拟镜像
直接用
strings liu.vmdk | grep CTF
得到flag
用python脚本补全bmp头部
python2.x
# -*- coding:utf-8 -*-
# author:pcat
# http://pcat.cnblogs.com
from Crypto.Cipher import AES
def getBMPheader():
#bmp是LITTLE-ENDIAN(小字节序、低字节序)
bfType='424d' #文件类型
bfSize='360c 3000' #文件大小,本题3148800+54
bfReserved1='0000' #保留,为0
bfReserved2='0000' #保留,为0
bfOffBits='3600 0000' #数据离文件头偏离量
biSize='2800 0000' #位图信息头的大小
biWidth='5605 0000' #宽度,本题1366
biHeight='0003 0000' #高度,本题768
biPlanes='0100' #颜色平面数,为1
biBitCount='1800' #比特数/像素,本题24位
biCompression='0000 0000' #压缩类型,0为不压缩
biSizeImage='0000 0000' #图像的大小,本题多少无所谓
biXPelsPerMeter='0000 0000' #水平分辨率,缺省
biYPelsPerMeter='0000 0000' #垂直分辨率,缺省
biClrUsed='0000 0000' #使用的颜色索引数,本题多少无所谓
biClrImportant='0000 0000' #重要的颜色索引数,本题多少无所谓
bmp_header=bfType+bfSize+bfReserved1+bfReserved2+bfOffBits
bmp_header+=biSize+biWidth+biHeight+biPlanes+biBitCount+biCompression+biSizeImage
bmp_header+=biXPelsPerMeter+biYPelsPerMeter+biClrUsed+biClrImportant
bmp_header=bmp_header.replace(' ','')
return bmp_header
def foo():
ciphertext=open('bestwing12345678.bmp','rb').read() #记得有'b'
key='bestwing12345678'
obj=AES.new(key,AES.MODE_ECB)
message=obj.decrypt(ciphertext)
fsave=open('out.bmp','wb') #记得有'b'
fsave.write(getBMPheader().decode('hex')+message)
fsave.close()
pass
if __name__ == '__main__':
foo()
print 'ok'
python3.x
import pyaes
def generate_bmp():
bmp_header = b'\x42\x4d\x36\x0c\x30\x00\x00\x00\x00\x00' \
b'\x36\x00\x00\x00\x28\x00\x00\x00\x56\x05\x00' \
b'\x00\x00\x03\x00\x00\x01\x00\x18\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
key = b'bestwing12345678'
new_bmp = b''
with open('bestwing12345678.bmp', mode='rb')as f:
byte_content = f.read()
aes = pyaes.AESModeOfOperationECB(key)
for i in range(0, len(byte_content), 16):
byte16 = byte_content[i: i + 16]
decrypt_byte = aes.decrypt(byte16)
new_bmp += decrypt_byte
with open('bmp.bmp', mode='wb')as f1:
f1.write(bmp_header + new_bmp)
if __name__ == '__main__':
generate_bmp()
根据题目和提示可知用outguess,没有密码直接解密
outguess -r angrybird.jpg 666.txt
得到flag
下载图像,扫二维码得到提示:我不会拼音
不会拼音,那就是五笔了,查询"我不会拼音"的五笔字根表:
根据经验这个文件名肯定是提示,反过来就是Image Steganography
下载这个工具解密,密码为上边解密得到的:trntgiiwfcuruahujf
最后得到flag
下载图像,binwalk分析发现有压缩包
foremost分离,解压出来是一个mp3文件
用MP3Stego不带密码解密
Decode.exe -X apple.mp3
结果失败,应该是有密码的
返回查看那张图片,仔细一看是个二维码,解码得到密码:\u7f8a\u7531\u5927\u4e95\u592b\u5927\u4eba\u738b\u4e2d\u5de5
得到一串当铺密码,去解密,密码为:9158753624
Decode.exe -X -P 9158753624 apple.mp3
得到一串Base64编码:Q1RGe3hpYW9fcGluZ19ndW99,解密得到flag
下载一个doc文件,直接猜到是word doc隐写,打开->显示隐藏字符,得到字符串
解压压缩包得到两张一样的图片
直接用Stegsolve的Image Combiner功能得到一张反色的二维码
保存出来,然后把保存出来的二维码再放进Stegsolve,查看各个色道
得到三个二维码,解密出以下信息:
DES
6XaMMbM7
U2FsdGVkX18IBEATgMBe8NqjIqp65CxRjjMxXIIUxIjBnAODJQRkSLQ/+lHBsjpv1BwwEawMo1c=
应该是加密方式,密钥和密文
解密DES,得到flag
打开图片是个二维码,解码,一串字符串:HttP://pcat.cnbloGs.cOM?Hh
是pcat大佬的博客,去掉特殊字符:HttPpcatcnbloGscOMHh,大小写应该是培根密码
解密,(大写为B,小写为A)
HttPp→ BAABA→t
catcn→AAAAA→a
bloGs→AAABA→c
cOMHh→ABBBA→p
得到密码:tacp
jphs->seek解密
用Stegsolve打开图片得到压缩包的密码
解压出一个gif文件,无法打开,用WinHex补全文件头
打开得到flag
Stegsolve打开,有个二维码,解密得到一串ASCII字符串
解密是一串摩斯电码
然后再解密
最低位!!!,一看就知道是LSB隐写。
这里有LSB隐写的总结和这道题的WP:链接
stegsolve反色,然后扫描二维码
考察图像元信息
保存图片文件右键查看属性-详细信息,可以得到key
再进行base64解码即可
下载gif图像,补全文件头,打开得到一个key,Base64解码得到flag
下载png图像,使用PNG图片分析工具tweakpng打开
通过工具发现pHYs字段CRC校验值不正确。
整体查看字段发现有Adobe专属的数据块mKBT等
且查看iTXt字段发现是使用Adobe Fireworks CS5 11.0.0.484 Windows创建的。
使用Adobe Fireworks打开图片,发现存在两个图层,另一个图层为二维码。
扫描二维码,得到一串十六进制。
将十六进制导入十六进制编辑器,查看文件头,确认为pyc类型文件。
使用pyc反编译工具,得到源代码
查看源代码,根据题目和tEXt字段,猜测key=py,成功获取Flag
爆破
看文件头有PK,这是zip格式的头文件标志
将文件拓展名改为zip,打开找到flag
Winhex修改图片高度即可
使用工具braintools:
bftools.exe decode braincopter doge.png --output --dogeout.png
bftools.exe run --dogeout.png
这样就可以得到一串字符,base64编码的,解码一下就可以得到flag
http://hebin.me/2017/09/10/%e8%a5%bf%e6%99%aectf-rose/
http://hebin.me/2017/09/10/%e8%a5%bf%e6%99%aectf-beyond/
隐写wbStego的使用,支持BMP文件隐写
http://hebin.me/2017/09/10/%e8%a5%bf%e6%99%aectf-lsb/
binwalk
MP3Stego
stegslove打开,扫描二维码
binwalk -e 分离出两张图
stegsolve,把两个图sub一下,保存出来
再用stegsolve打开查看各个颜色通道,发现异常
。。。。
更像是web题~~
base64编码download.php放到url参数
图
将hereiskey.php进行base64编码后放入url提交,得到key