前言

继续写一下攻防世界的另一个类型的题目:MISC
已经更过一篇WEB题的文章了

MISC也就是杂项,杂项,就是很杂的意思,emmm也就只能这么解释了,一般来说,杂项的题考察的知识点比较多。解题思路也不像是专项题那样有一个大方向,往往需要更大的知识储备以及经验积累

做MISC题的话有时会用到其他的一些工具,比如:

  • Winhex
  • stegsolve
  • foremost
  • kali
  • 。。。

this_is_flag

练手题,描述就是flag

pdf

题目给了一个PDF文件,先下下来看一下吧

没啥异常的,编辑器打开搜索一下关键字:

emmm,也没有,转成word,在线转,在线编辑:

发现在图片下面隐藏了一个字符串,flag,移开图片就可以了

give_you_flag

这道题给了一个gif,打开看的时候,发现了有一帧是一个二维码,这里我们拆帧看一下:

找到这幅图片:

然后发现缺少定位,这里我们补充一下三个定位码

不知道为啥在线解析不了,微信扫描能解析,反正是拿到flag

坚持60s

这道题给了一个jar包,是一个躲避障碍物的游戏,需要坚持60秒,试了一下,弃疗:

这里选择jd-gui反编译这个jar包,然后搜索一下字符串flag:

提交发现不对,然后看了一下,flag里面似乎是一个base64的编码,解码如下:

大吉大利今晚吃鸡,应该是对了,提交成功

gif

这道题给了一个压缩包,下载以后打开发现是一系列黑白纯色的图片,一般看到这种只有两种数据的文件来说,首先想到的应该是二进制摩斯电码,这里也没有什么分隔符之类的,应该是二进制,这里用脚本直接跑吧:

得到flag

用到的脚本:

baseDir = "F:\\Edge Download\\dbbc971bf4da461fb8939ed8fc9c4c9d\\gif\\"

whiteImage = open(baseDir + "0.jpg", "rb").read()
blackImage = open(baseDir + "1.jpg", "rb").read()

stringImage = ""

for i in range(104):
    fileImage = open(baseDir + str(i) + ".jpg", "rb").read()
    if fileImage == whiteImage:
        stringImage = stringImage + "0"
    else:
        stringImage = stringImage + "1"
print(stringImage)
flag = ''
for i in range(len(stringImage)//8):
    flag += chr(int(stringImage[i*8: (i+1)*8], 2))

print(flag)

掀桌子

题目给了一串字符串:
c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2

看了一下,发现应该是16进制吧,0-9和a-f,直接16进制转字符串试一下:

转换失败了,还是乱码,这咋回事儿,乱码说明,我们要转的ASCII码不在1-128以内,因为标准ASCII码最大到128,但是看了一下字符串,两位算一个字符,发现都是大于128的,那我们直接每两位转化为10进制,再减去128,再转成字符串,一段代码搞定:

成功拿到flag
用到的代码;

import re

hexString = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
listString = re.findall(r'.{2}', hexString)
flag = ''
for i in listString:
    flag += chr(int(int(i,16)-128))
print(flag)

如来十三掌

下载以后是一个word,打开后这段文字一般没人看得懂,这是一种加密,没错,佛曰加密:

再次得到一段字符串,不像是flag,提交试试,不对,然后Base64解码试试,也不对,这里直接在CTFcrackTool里面吧:

最后使用rot13解一下,然后再Base64解密一下:

得到flag

stegano

又是得到一个PDF文件,打开看看:

在尝试过转word,分离文件,编辑器直接打开以后,都没有什么有用的信息发现,最后Ctrl+A全选复制到编辑器发现了一些信息,发现一长串BA的字符串,前面提到过,这种格式的字符产,要想摩斯电码或是二进制:

这里可以看到明显的分隔符,所以将AB转化为.-,然后转摩斯电码试试:

成功拿到flag

SimpleRAR

下载下来以后打开是一个损坏的压缩包,提示图片文件损坏,用winhex打开以后发现的确是有一张图片文件:

因为这里提示图片的文件头损坏,所以我们看看rar压缩包各个文件头的特征:

打开winhex查看一下各个区块的特征是否有修改:

这里flag文件后面应该就是属于图片的区块数据了:从上面可以看出箭头标识的是子块,但是我们需要文件,所以将这里的7A改成74就可以正常解压缩了,然后得到图片文件

由于题目已经提示是双图层,所以我们使用PS分离一下,另外需要注意的是,解压缩出来的图片文件后缀是png,但是用winhex打开发现文件头是GIF;


所以这里修改一下文件的后缀名,改为gif,然后使用PS打开,发现的确是双图层,将这两个图层都提取出来:

然后再使用stegsolve找到两张半截的二维码:

这里用PS拼接成完整的二维码,然后补充一下定位符,因为上面已经说过怎么操作了,所以就不多说

base64stego

解压下载好的压缩包以后,发现是很多的base64编码的数据,直接转一下吧:

解出很长一段字符串,然后提交,不对,根据解码出来的字符串提示是隐写这里直接拿脚本跑一下:

得到flag

用到的脚本:

# -*- coding: cp936 -*-
import base64
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('F:\\Edge Download\\a2eb7ceaf5ab49f7acb33de2e7eed74a\\stego.txt', 'rb') as f:
    bin_str = ''
    for line in f.readlines():
        stegb64 = str(line, "utf-8").strip("\n")
        rowb64 =  str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")
        offset = abs(b64chars.index(stegb64.replace('=','')[-1])-b64chars.index(rowb64.replace('=','')[-1]))
        equalnum = stegb64.count('=')
        if equalnum:
            bin_str += bin(offset)[2:].zfill(equalnum * 2)
        print(''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]))

ext3

根据题目的描述,是一个linux镜像文件,所以放到kali下面,用binwalk跑一下:

发现有很多文件,那全部提取一下:

直接搜索一下flag文件:

成功找到一个,直接cat之后是base64编码的,然后解码一下,得到flag:

功夫再高也怕菜刀

下载题目的附件发现是一个wireshark的pcap数据包,先分离一下文件:

分离出一个zip的压缩包,使用winhex打开看一下是不是伪加密:

不是伪加密,这种一般来说就是就是要找密码了,那打开pcap包看一下:

搜索一下flag:

这里找到一个6666.jpg,但是并没有分离出图片文件,所以这里我们右键悬着跟踪流,悬着TCP流:

要分离出完整的图片,我们需要了解jpg的文件头以及文件尾的格式是什么:

所以我们要找FFD8的文件头,以及FFD9的文件尾,然后我们看下流:

找到文件头,继续找文件尾,这里要注意,要找最后一个FFD9,我开始找的第一个FFD9,导致无法复制到winhex里:

然后我们从FFD8复制到最后一个FFD9,到winhex新建文件,右键编辑,从剪贴板粘贴,选择hex数据格式,删除问题头部的00,保存:

得到一副带有密码的图片:

使用这个密码解压缩压缩包得到,flag.txt:

写在最后

终于写完了,期间因为没保存文章,重新写了一次,心累

总的来说,杂项的题对比Web的题来说考查的知识点要多很多,也要用到更多的工具,难度上来说也提升了很多,但是对于新手来说还是很不错,而且题目自带了很多writeup,也比较适合用来学习进步

最后修改:2020 年 09 月 08 日 11 : 28 AM