CTFctf

蓝鲸安全CTF打卡第一期隐写篇WriteUp

2018-06-15  本文已影响239人  Eumenides_62ac

雨中龙猫

题目

雨中龙猫

知识点

图片源码隐写、base64编码

解题

用notepad++打开
搜索把whalectf经过base64编码后的d2hhbGVjdGY=来找flag
查找的时候要不断去掉几个,因为我们并不知道后面的内容
最后查找到


d2hhbGVjdGZ7TG就是我们的一段flag
提示告诉我们最后是py,那就随便输入点组成aaaaapy}后进行base64编码,取最后的Hl9进行搜索

拼接再一起后得到d2hhbGVjdGZ7TG9uZ19tYW9faXNfaGFwcHl9
base64解码一下就是最后的flagwhalectf{Long_mao_is_happy}

鲸鱼日记

题目

鲸鱼日记

提示

文件绑定、word隐藏

文件绑定的方法
# 在cmd中
copy /b 1.jpg+2.txt 3.jpg

解题

拿到图片,在kali里面使用binwalk工具进行分析

$ binwalk whalediary.jpg 

可以看到一个zip压缩包隐藏在里面
使用foremost工具

$ foremost whalediary.jpg -o out

输出到了一个叫做out的文件夹


分离后的文件

可以看到word文档
打开可以看到


解密前
然后把word里隐藏的内容显示出来,具体操作
操作

把隐藏选项去掉后确定


解密后
把每段最后的字母提取出来组合就是最后的flag

追加数据

题目

追加数据

知识点

PNG文件格式、zlib压缩数据、二维码识别

解题

首先使用pngcheck工具检查图片的IDAT位

$ pngcheck.exe -v whalectf.png
pngcheck检查

可以看到一个IDAT位为0x17345,长度为193
用winhex打开图片,找到IDTA块对应的位置
如图所示截取


截取

这里不需要截取长度标志位C1和IDAT图像数据块和最后四位的CRC冗余校验码
使用如下脚本进行分析

# python2
#! /usr/bin/env python
import zlib
import binascii
IDAT='789CA552B911C3300C5B09D87FB99C65E2A11A17915328FC8487C0C7E17BCEF57CCFAFA27CAB749B8A8E3E754C4C15EF25F934CDFF9DD7C0D413EB7D9E18D16F15D2EB0B2BF1D44C6AE6CAB1664F11933436A9D0D8AA6B5A2D09BA785E58EC8AB264111C0330A148170B90DA0E582CF388073676D2022C50CA86B63175A3FD26AE1ECDF2C658D148E0391591C9916A795432FBDDF27F6D2B71476C6C361C052FAA846A91B22C76A25878681B7EA904A950E28887562FDBC59AF6DFF901E0DBC1AB'.decode('hex')
result = binascii.hexlify(zlib.decompress(IDAT))
bin = result.decode('hex')
print bin
print '\r\n'
print len(bin)

运行脚本得到


图片

一串0和1的数据 长度为1024 是一个正方形 可以想到是要生成一个二维码
把生成的0和1放在result.txt里面,用如下脚本生成二维码

# python2 
#! /usr/bin/env python
import  Image
MAX = 32
pic = Image.new('RGB',(MAX*9,MAX*9))
f = open('result.txt','r')
str = f.read()
i = 0
for y in range(0,MAX*9,9):
    for x in range(0,MAX*9,9):
        if(str[i] == '1'):
            for n in range(9):
                for j in range(9):
                    pic.putpixel([x+j,y+n],(0,0,0))
        else:
            for k in range(9):
                for l in range(9):
                    pic.putpixel([x+l,y+k],(255,255,255))
        i = i+1

pic.show()
pic.save("flag.png")
f.close()

得到二维码


flag

使用QR_Research扫描后就出现flag


QR

破碎的心

题目

破碎的心

知识点

条形码

解题

一个不完整的条形码


破碎的心

我们选择其中的条形码还原即可
在画图里,先用矩形框选择一些连续的条纹,按住ctrl,按上下键不断还原即可


画图
最后用BcTester打开即可得到flag
条形码扫描

我们不一样

题目

我们不一样

知识点

双图对比

解题

首先使用binwalk分析,发现了两张图片



使用foremost分离出去



得到两张图片
使用kali里的compare工具进行分析

看到图片左下角有一个非常小的变化
使用python脚本打印出来

# python2
#coding:utf-8

import Image
import random

img1 = Image.open("1.png")
im1 = img1.load()

img2 = Image.open("2.png")
im2 = img2.load()


a=''
i=0
s=''

for y in range(img1.size[1]):
    for x in range(img1.size[0]):
        if(im1[x,y]!=im2[x,y]):
            print im1[x,y],im2[x,y]
            if i == 8:       #以8个为一组 打印出字符串
                s=s+chr(int(a,2))
                a=''
                i=0

            a=a+str(im2[x,y][2])
            i=i+1
s=s+'}'
print s

运行完后


我们可以看到它的蓝色通道不一样,它是把蓝色像素转换成为0和1,8个位一组转换成字符
当然 flag也是在最后whale{w3_ar3_d1ffe2en7}

黑白打字机

题目

黑白打字机

知识点

二维码、setganography、五笔编码

解题

拿到一张二维码,发现颜色是反的,所以先拿到画图里面反色

反色操作 放到QR Research分析一下

提示我'你会五笔吗'
图片的名字yhpargonagets反过来是setganography,百度得到这个工具
我们使用这个工具解密,勾选Decode和Decrypt,发现需要密码

之前提示我们的话,我们针对每个字都进行五笔解密查询(一定要86版五笔)


最终得到一串字符wqiywfcugghgttfnkcg,以此当密码输入,成功得到flag
@8WPHV3E27FERUPT)V)8FFA.png
上一篇 下一篇

猜你喜欢

热点阅读