CTF之隐写

作者: Sund4y | 来源:发表于2017-06-20 11:08 被阅读14025次

    0x01 PNG图片

    PNG文件结构分析

    https://my.oschina.net/ososchina/blog/801358

    (1)用16进制编辑工具更改图片的高度,会只显示图片的一部分,下面的部分就被隐藏了,是个藏东西的好办法

    找表示宽度和高度的位置的话,可以先看看图片的属性,得到宽高值,转成16进制,搜索16进制值就找到了

    注:png图片的保存恢复效果比较好,jpg貌似有点问题

    题目链接:http://pan.baidu.com/s/1qY8sxZI 密码:5xam

    图片尺寸为500x420(宽x高)

    00 00 00 0D 说明IHDR头块长为13

    49 48 44 52 IHDR标识

    00 00 01 F4 图像的宽,500像素

    00 00 01 A4 图像的高,420像素

    最后四位CB D6  DF  8 A为CRC校验

    将图片的高改为500像素就拿到flag了

    (2)初次遇见条形码。。。。

    各种工具找,最后看了writeup才知道这马身上有条形码。。。。。

    还是用画图工具拼接出来的完整条形码去扫描的,不会ps愁死人。。。。。

    在线扫描https://online-barcode-reader.inliteresearch.com/

    (3)烦人de皮卡丘

    题目链接:http://pan.baidu.com/s/1i5IG3JZ 密码:lymw

    不管是用binwalk还是stegsolve左右点都没有结果,在大佬这找到了答案http://blog.csdn.net/fuzz_nancheng/article/details/53384353?locationNum=4&fps=1

    原理我也不懂啊。。。。。又找到相关文章http://www.tuicool.com/articles/qINzyum,有待理解。。。。

    (3)双图

    题目链接:http://pan.baidu.com/s/1pLiCMdd 密码:590r

    拿过来图片先用binwalk分析一波,发现有两张图片,用winhex抠出来之后发现和第一张一样,第一张命名1.png,第二张2.png,用linux的compare命令比较一下,

    compare 1.png 2.png diff.png,发现diff.png下面有红线,

    用stegslove打开2.png选择image combiner

    选择1.png这时候会做一个xor运算,保存图片为solved.bmp

    winhex打开solved.bmp
    ,发现除了00就只有这里有东西了

    记下地址之后把2.png用ps打开另存为2.bmp,再用winhex打开2.bmp找到刚刚记下的地址把16进制数据复制出来,写个脚本把其中的二进制数扣出来,00为0,01为1然后再把二进制转换成ascii码得到flag

    (4)再遇双图

    题目链接:http://pan.baidu.com/s/1qYtzZIG 密码:31bg

    这次很直接,解压出来就是双图,用stegslove的image combiner

    保存反色,再用stegslove对二维码变化一下,得到三张二维码,扫描结果是DES  6XaMMbM7
      和一长串字符,des加密,秘钥是6XaMMbM7,解密吧得到flag

    (5)py的交易

    题目链接:http://pan.baidu.com/s/1c2KmV1A 密码:2m3f

    binwalk跑了一下除了很多的zlib什么也没发现,winhex打开看到了几个连续的pypypy。。。。。在一串常规的字符中看到了fireworks。。。


    发现图层1被隐藏了,打开后发现了二维码

    扫描得到一串16进制

    03f30d0a3b8bed56630000000000。。。。。用winhex保存一下看到了CTF字样,

    还有pyt。。file一下发现python 2.7 byte-compiled,应该是pyc了,用uncompyle解一下发现flag里有个变量key,那key就是py了。强行符合题目要求。。。

    (6)盲水印攻击

    这里是利用脚本及说明  https://github.com/chishaxie/BlindWaterMark

    当用compare两张png之后发现不再是上面双图情况下的一条红线,而是很多条,就可以考虑一下是不是盲水印攻击了


    (7)IDAT数据块隐藏

    前面说过png的IHDR属性,在png中,大致分为四个大的数据块,IHDR数据块,PLTE数据块(调色板),IDAT数据块,IEND数据块(结尾标志),IDAT数据块在一个png图像中是可以存在多个的,但是好像正常情况下binwalk检测和插入了IDAT数据块后检测的结果是不一样的,,可以这样来辨IDAT是否有问题

    比如这是正常的png图片,分析的结果是

    这个图片也是有多个IDAT的块的,而在添加了一个IDAT块之后检测结果是这样

    并且FFDA位置是第二个IDAT的起始位置。当把第一个IDAT块扣掉之后原图就会显露出来,

    IDAT包含了四部分,第一部分是数据块长度(4位16进制),第二部分是IDAT标识符(4位16进制),第三部分是数据块,第四部分是CRC校验码(4位16进制)

    00 00 FF A5(数据块长度为FFA5)

    49 44 41 54 (IDAT标识符)

    接下来是数据块,在FFA5长度的数据块之后是4位16进制的CRC校验码

    并且合并过的IDAT的png图片用fireworks打开会提示格式错误,查看不了,ps就没有这个功能。。。。

    0x02jpg图片

    (1)图种

    题目链接:http://pan.baidu.com/s/1c2L8euk 密码:4h6k

    binwalk跑一下发现是两张图片

    第二张图片的偏移量是158792,用winhex将第二张图片提取出来保存为jpg格式就是flag了

    或者用foremost提取 foremost -v -i 2.jpg -o /root/aa     aa为空目录

    (2)画图

    题目链接:http://pan.baidu.com/s/1o7ZkGC6 密码:rmro

    这里没有flag,用winhex打开发现图片后面有很多的数据

    复制下来保存为txt文件用notepad++转换一下编码

    这就是坐标了,这样来画图吧 转换成gnuplot能识别的格式

    扫码得到flag

    (3)妹子的默默

    题目链接:http://pan.baidu.com/s/1c1YjjDA 密码:id5a

    binwalk跑一下发现rar文件,但是加密了。。。。找了很久密码,看了大佬的writeup才知道密码是图片上的“喜欢我吗.”注意:密码是汉字不是拼音,解压出来是这个

    第一个莫斯电码解码,得到一个网址,根据下面 的提示是AES加密,解密得到momoj2j.png访问http://c.bugku.com/momoj2j.png得到二维码

    (4)F5隐写

    链接:http://pan.baidu.com/s/1cnMYzs 密码:v0er

    cd F5-steganography

    java Extract 123456.jpg -p 123456

    后会生成output.txt文件,里面就有flag了

    0x03bmp格式图片隐写

    题目链接:http://pan.baidu.com/s/1jIp82NG 密码:ikov

    下载下来之后发现后缀是png,然而winhex打开发现并不是png头文件

    file一下是bmp文件,用wbs43open来解密吧http://pan.baidu.com/s/1slc2YHR,


    密码值为空

    解出来用notepad打开就看到flag了

    0x04流量分析

    题目链接:http://pan.baidu.com/s/1mi3aWwK 密码:4fd9

    (1)下载了一个pcapng的文件,用wireshark打开,过滤条件是http协议,发现了一句话的痕迹

    在开始的时候发现

    有flag.tar.gz

    接下来的http里应该就有这个数据了,在最后一个包里发现

    解一下压缩吧

    其他

    (1)遇到了一个exe文件,用notepad++打开发现是一串base64,直接把代码复制到在线base64转图片得到flag

    题目链接:http://pan.baidu.com/s/1kUCWiNX 密码:xlui

    在线转换  http://imgbase64.duoshitong.com/

    (2)遇到一个宽带信息泄露的bin文件用routerpassview查看搜索username找到用户名就是flag

    题目链接:http://pan.baidu.com/s/1pLbQzTT 密码:g1i9

    (3)linux基本问题

    题目链接:http://pan.baidu.com/s/1dFIivh3 密码:olcx

    用notepad++打开发现flag.txt,用binwalk提取得到flag.txt

    (4)onlyonefile

    题目链接:http://pan.baidu.com/s/1geO9DHT 密码:nia7

    下载之后先用binwalk跑了一下发现很多zip包,果断分解,发现文件夹里都是布置格式的文件但名字是有规律的,并且还有一个0.zip解压出来也没发现什么,用winhex打开第一个文件看到了PNG,猜想是png图片,但是结尾没有IEND,不完整,打开最后一个文件发现了IEND,题目又叫onefile,应该是图片分解了,于是linnux下cat outfile/* >1.png合成了png图片,但是依旧没有flag,binwalk发现图片后面好多zlib文件,找了很久,再用winhex查看发现了头文件不远处的Adobe Fireworks CS5,下载下来看起来和ps差不多。。。。。。打开图片后原来是两个图层,把第一张图片拉开再翻转一下二维码颜色得到flag了。

    (5)再遇Adobe Fireworks CS5

    题目链接:http://pan.baidu.com/s/1c3vzum 密码:n26x   题目名为IHDR

    这次比较干脆,直接给了一个png文件,winhex打开一切正常,binwalk跑一下还是满大街的zlib包,也发现了Adobe Fireworks CS5字样,于是用Adobe Fireworks CS5打开,发现格式错误。。。。。回去看了看png文件格式,没毛病,那就只有crc没有检测是否正确了,给个crc抄袭的计算代码。链接:http://pan.baidu.com/s/1dFcQTu5 密码:ytxd  里面的数据替换为相应的HIDR Chunk,就得到正确的crc了,再次用Adobe Fireworks CS5打开flag就直接出来了

    (6)这个应该属于杂项

    题目链接:http://pan.baidu.com/s/1jIwZIFc 密码:bk62

    file一下发现是data文件(跟没发现一样),扔到winhex里发现是这样

    FF D8不就是jpg头文件,FF D9不就是jpg尾文件标志吗,原来是把16进制逆过来了 ,写个脚本再还原回来就好了 

    f=open("1.reverseme","rb")

    g=open("1.jpg","wb")

    f.write(g.read()[::-1])

    f.close()

    g.close()

    用ps旋转一下就好了

    (7)加密的文档

    题目链接:http://pan.baidu.com/s/1misRWU0 密码:b19t

    下载得到一个zip压缩包,确实加密了。。。。可是题目没有给密码提示啊,伪加密?试试看,眼瞎的我没有看到在底部50 4B ,这个地方改成了09 00

    还是找到writeup才回来找,不过看到了大神用010Editor,又get到一个新工具,并且看到未加密是这里是0,加密这里标志位就不是0了

    别忘了第二行还有标志位。。。。

    好了,改成0,成功解压出一个docx文档,

    刚开始还以为是把flag字体和背景颜色设置一样了,结果没有。。。把图片拷出来也没找到。。。。又回来看大神的writeup,解压之后的docx文档还是藏着压缩包。。。。改成zip格式解压出来找到两张图片

    吐了一升血。。。。。

    相关文章

      网友评论

      • 73a388cd28cd:那个初次遇见条形码的wp有链接吗?
      • e0982291a5dc:用了我的图,好得也放个原文链接吧。。。
        Sund4y:@迪迦凹凸曼 哪个?我给补上,其实我就是想做个笔记而已……
      • 69e9e6f07865:膜拜大佬博客

      本文标题:CTF之隐写

      本文链接:https://www.haomeiwen.com/subject/hmeoqxtx.html