CTF-入门四

CTF-入门四

在前面的话:
我已经两个礼拜没写博客了,嘻嘻小小偷懒。还是觉着ctf的坑是在是太大了。水深,让人有点游不动,有时候ctf的题根本就是一个让人摸不着头脑的东西。随着题目越做越多,知识点越来越密集,解题的步骤越来越多,以前能够写三题的时间,现如今写出来一提都够呛。有些时候,就比如杂项类的题,真是开局一张图,感觉可以解析出一个天下。但我还知道,现在还只是初级阶段,前面的路还有很长啊。接下来记录的还是我近期写的杂项题,因为,题目的加深我尽可能将,解题的步骤写的详略一些。至少在写完bugku的杂项题,才会去动其他的类型的题目。
(1)爆照
开局一张图,好美腻的小姐姐
常规开头file 8.jpg好像没有什么东西啊
binwalk 8.jpg一下 ,这不看不知道,有这么多的东西啊CTF-入门四_第1张图片
那就foremost 8.jpg一下在output文件夹里面有一张原图片,和一个zip文件,根据以前的做题经验啊,先看下原图片有没有什么隐藏的密码信息,很抱歉,么得
zip文件密码破解,没有提供什么信息,爆破那是没有办法的办法,我们试一下爆破吧
fcrackzip ------发现好像没有什么作用
这里其实是zip的未加密,什么是伪加密
若把未加密的zip压缩源文件目录区的全局方式位标记改为 01 00 (或者 09 00),就会被压缩软件认为是已加密,即所谓的伪加密
破解伪加密的zip,只要把压缩源文件目录区的全局方式位标记改为 00 00 即可解压
更多可以参照这篇博客https://blog.csdn.net/qq_26187985/article/details/83654197
CTF-入门四_第2张图片原先是00 09 改成了00 00
发现可以解压出来啦,是八个文件,我们依次用file看看这些文件有没有隐写信息
我们发现88 888.jpg 8888文件时有隐写信息的
CTF-入门四_第3张图片
在kali中这些其实都是可以直接看到这些都是图片格式的文件,window下要用画图工具打开才能直接的看到
CTF-入门四_第4张图片

我们发现88图片文件中有一个二维码,直接扫出来是bilibili
我们结合一下题目所给的flag的格式在这里插入图片描述
这个bilibili就是其中的一个xxx,剩下的两张应该就是剩余的两个xxx
我们看一下888.jpg这是八张图片中唯一的一个有明确的后缀名的格式文件,不排除这是提示信息,我们先看一下这张图片的属性,在详细信息的这一栏有一段奇怪的字符CTF-入门四_第5张图片

一般详细信息基本都是解题的重要信息base64解码看看
CTF-入门四_第6张图片
是silisili,第二个xxx
接下来看第三个文件,老规矩既然有exif隐写信息,直接foremost一下。
出来了一个zip文件解压出一张二维码图片
CTF-入门四_第7张图片
扫码出来,这便是第三个xxx panama。
可能需要排一下顺序,但依照图片的顺序,应该是依次排序的
所以flag:flag{bilibili_silisili_panama}
(2)猫片
拿到png文件
首先拿到一张png的图片,从这个文件的名字我们可以判断出这应该是一张.png格式的图片,将它的后缀名格式改为.png。
出现了一张猫的图片。
这时候你用file/binwalk/oremos好像没有什么隐写的信息出来,这个是后你就会有点迷茫,咋办呢。
这个时候出现第三种初始化开头,看一下是不是LSB隐写,用工具stegsolve查看图片是不是LSB隐写,什么是LSB隐写呢(题目hint有个提示LSB)
简单来讲,我们知道图片中的颜色是RGB三原色构成的,而每一个R、G、B即红绿蓝,每个颜色都是又八个二进制位所控制的,比如ff0000(十六进制)就是纯红00ff00就是纯蓝,由这种方式构建出所有的颜色。每八个二斤重位控制一种颜色的程度。而八个二进制位的最后一位的改变,我们肉眼是看不出来的,所以很多出题人就用这种方式将解题的信息就放在了这三种颜色的最低有效位上面来了:
更多的LSB隐写相关的知识:
https://segmentfault.com/a/1190000016223897
用工具stegsolve可以将LSB隐写信息从源图片中提取出来
打开stegsolve ->analyse->data extractCTF-入门四_第8张图片注意选择的方式,为什么是这样选择呢,其实是一个一个试着出来的。直到你先选择的方式在preview中出现了你可能用到的信息,比如,这里解析出来了一个png,一张png的图片信息,这就是解题可能所需要的,然后将其保存为.png格式的文件,发现打不开,我们红winhex检查一下头部信息,发现不是有点小问题,把头部信息修改掉
png的头部信息是89504E47
然后出来的是一个只有一半的二维码。
顺其思路,将这个图片修改一下高度CTF-入门四_第9张图片
改成一样宽高一样大小的就可以了(取大的值)
出现了一张完整的二维码
CTF-入门四_第10张图片
这里的二维码是反色的,因为如果你仔细观察过的话,那个小正方型的内部是黑色的,而这里却是白色的,其实不用担心,现在大部分的扫码软件都已经可以直接扫码了,直接将这种bug识别过滤掉,如果不行的话,用画图工具进行反色处理
还是用stegsolve
CTF-入门四_第11张图片
CTF-入门四_第12张图片
反色成功,扫描出一个百度网盘,下载一个压缩文件,解压出来CTF-入门四_第13张图片
默默的暗骂一声,本来以为解题到了这一步应该是完美收官了呀,怎么这么糟践人啊!
再回看一下题目CTF-入门四_第14张图片
NTFS,NTFS文件格式的隐写流
详细的解析https://www.cnblogs.com/Chesky/p/ALTERNATE_DATA_STREAMS.html

文件原本是在压缩包内的,这时使用除WinRAR以外的软件进行提取会造成数据流丢失。所以务必使用WinRar进行文件解压。(!!!)
之后下载一个Ntfs Streams Editor。
CTF-入门四_第15张图片
导入用winrar解压的文件,搜索,发现一个pyc(python编译之后的文件)将其导出CTF-入门四_第16张图片

既然这是一个编译后的py脚本,那么我们就要反编译成一个py脚本
网站
pyc反编译网站:
https://tool.lu/pyc/
CTF-入门四_第17张图片
下载过后我们得到了一个秘钥ciphertext[],和一个edcode()编码函数
CTF-入门四_第18张图片
所以我们根据这个编码函数,反写出一个解码的函数

def decode():
    ciphertext = [
        '96',
        '65',
        '93',
        '123',
        '91',
        '97',
        '22',
        '93',
        '70',
        '102',
        '94',
        '132',
        '46',
        '112',
        '64',
        '97',
        '88',
        '80',
        '82',
        '137',
        '90',
        '109',
        '99',
        '112']
    ciphertext.reverse()
    flag = ''
    for i in range(len(ciphertext)):
        if i % 2 == 0:
            s = int(ciphertext[i]) - 10
        else:
            s = int(ciphertext[i]) + 10
        s = chr(i ^ s)
        flag += s
    return flag


def main():
    flag = decode()
    print(flag)

if __name__ == '__main__':
    main()

运行py脚本就可以出现flag了CTF-入门四_第19张图片
写在后面的话
这两题写的我真的是心力憔悴啊,感觉每每写一题,那都是从零开始学一个新的知识,虽然不需要你特别精通,但你还是要知道,不够这样还有一个弊端,你没学精通,你只能用这一部分的知识去解决类似的题目,但是题目可是千变万化的啊,所以这样就使得,你必须去接触更多更新颖,乃至更繁杂的题目,这样一想,嘿嘿。。。你的路还长着呢
本来我我还写了几题,但是写wp是真的有点耗时间,今天就写到这里吧。码字真的很辛苦,呜呜呜~~

你可能感兴趣的:(CTF-入门四)