CTF – BUGKU – 论剑

题目说明

题目来源: ctf.bugku.com

题目: lunjian.jpg

解题步骤

看到图片先binwalk、foremost二连

foremost分离出两张图片

00000000.jpg

00000034.jpg

xor分析盲水印分析色道分析什么的都没用…

在尝试改高度的时候有了发现

更改00000000.jpg高度

发现一半flag

然而更改000000034.jpg没有另一半flag

回到上一步

更改lunjian.jpg的高度

和00000000.jpg相同

分析lunjian.jpg的hex值
在文件中间位置找到一串二进制

编写脚本

chars = '01101101 01111001 01101110 01100001 01101101 01100101 01101001 01110011 01101011 01100101 01111001 00100001 00100001 00100001 01101000 01101000 01101000'
flag = ''

for i in chars.split(' '):
    flag += chr(int(i,2))
    print(flag)

跑出结果 mynameiskey!!!hhh
按照以往MISC图片题目的尿性
可能是密码所以在二进制周围找一下压缩包文件头

128个常用的文件头信息对照表

在二进制后面找到损坏的7z文件头并修复

再次使用binwalk查看

使用dd提取

dd if=lunjian.jpg of=lunjian.7z skip=9591 seek=17568 bs=1

mynameiskey!!!hhh 作为密码解压后是一张图片

更改图片高度获得另一半flag

进行对照后获得

Not flag{666C61677B6D795F6E616D655F482121487D}hhhh

虽然它说了Not flag
但是我还是提交了一下
果然不是flag (喜闻乐见)

最后再进行base16解码

import base64
char = '666C61677B6D795F6E616D655F482121487D'
print(base64.b16decode(char))

得到flag

flag{my_name_H!!H}