CTF-隐写术(十)
声明:以下CTF题均来自网上收集,在这里主要是给新手们涨涨见识,仅供参考而已。需要题目数据包的请私信或在下方留言。
19.我就是flag(来源:实验吧)
1.关卡描述
2.解题步骤
分析:
迅雷下载:
或者python脚本下载:
import requests
import io,sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8') #控制输出的编码,可以不要
response = requests.get('http://ctf5.shiyanbar.com/stega/IHDR.png')
cat_img = str(response.text).encode('utf-8')
#出现bytes错误,TypeError: a bytes-like object is required, not 'str'
#str通过encode()方法可以编码为指定的bytes
print(cat_img)
with open('ihdr1.png','wb') as f:
f.write(cat_img)
f.close()
考察CRC校验
下载png文件后,发现打不开,但是看得到文件的缩略图,这时候很大可能就是文件中哪里校验出错。
----
png格式主要由六大块组成:文件头、IHDR块、PLTE块、tRNS块、IDAT块、文件尾
文件头一般是 8950 4E47 0D0A 1A0A
而本题提示中的IHDR块是png中用来描述图片的基本信息,格式是4字节Chunk_Length、4字节Chunk_Type、13字节Chunk_Data、4字节Chunk_CRC
Chunk_Length:内容一般是13,决定了Chunk_Data的大小
Chunk_Type:内容为49484452,代表"IHDR"
Chunk_Data:4字节Width,4字节Hegiht,1字节BitDepth,1字节ColorType,1字节CompressionMethod,1字节FilterMethod,1字节InterlaceMethod
Chunk_CRC:把Chunk_Type和Chunk_Data合起来进行CRC校验
----
这里如果你有pngcheck这个软件,你用一下就会发现里面CRC校验错误
c:\pcat\pngcheck>pngcheck.exe IHDR.png
IHDR.png CRC error in chunk IHDR (computed b0a7a9f1, expected fe1a5ab6)
ERROR: IHDR.png
如果没有,大致也可以猜到是CRC校验,本图的Chunk_Length和Chunk_Type都没问题,而CRC是由Type+Data合起来进入CRC运算得到的,自己编程计算出新的CRC值,然后用Winhex修改Chunk_CRC即可打开图片。(如果本题是Data出了问题,那么只能是通过暴力**得到正确的Data)
# -*- coding:utf-8 -*-
import binascii
def crc32(v):
return '%x' % (binascii.crc32(v) & 0xffffffff)
def foo():
chunk_type="49484452"
chunk_data="0000029C 000001DD 08 06 00 00 00"
chunk_crc="FE1A5AB6"
print "Old:",chunk_crc
chunk_crc=(chunk_type+chunk_data).replace(' ','').decode('hex')
print "New:",crc32(chunk_crc).upper()
pass
if __name__ == '__main__':
foo()
print 'ok'
打开图片后,里面写着"Where Is The Key?",这里不用慌,如果以前有做过同个出题人出的那题"Only one file"(在"安全杂项")里,就很清楚该出题人一般是用Adobe Fireworks CS5来隐藏图层(想了解更多的可以参看我那题的wp),所以只要下载个Adobe Fireworks CS5打开这图片,在"背景"那里就可以看到了。
B0A7A9F1
修改后保存用Adobe Fireworks CS5打开:
CTF{PNG_IHDR_CRC}
注:如果没有Adobe Fireworks CS5可以修改图像高度即Chunk_Data:4字节Hegiht
修改为00 00 02 DD
20.BrainFuck(来源:实验吧)
1.关卡描述
2.解题步骤
分析:
下来是一张图片,放到虚拟机里binwalk好像并没有什么东西,用winhex等工具打开也没有发现什么
再回到题目名称 BrainFuck 这个时候就要想到我们的bftools工具了
把下下来的图片放到bftools工具目录下,在当前目录进入cmd,键入如下命令
bftools.exe decode braincopter doge.png --output --dogeout.jpg
bftools.exe run --dogeout.jpg
Q1RGe0JyYWluZnVja18xc19TaW1wMWV9
即可以得到一串base64
CTF{Brainfuck_1s_Simp1e}
或者:
行吧,接下来就是你们想要问的bftools的下载链接咯~
下载链接:https:pan.baidu.com/s/1Mo0FS_DVVXbcOgUtEQfclg 密码:i6xb