MISC专项-其他类型
一、二维码
1.解压出来是一张二维码,用微信进行扫码,发现扫出来的不是flag。
2.用winhex打开该文件,发现里面存储了一个名为number.txt的文件。
3.将图片的后缀名改为zip,解压发现里面确实有一个txt文件。
4.点击该文件,发现需要密码,尝试暴力破解方法。
5.输入密码,成功获得flag。
二、zip伪加密
1.打开压缩包,点击flag.txt文件,显示要密码,第一反应便是用ziperello直接爆破。
2.但是爆破了很久也没有跑出来,再一看题目是伪加密,看来应该是没有密码的。就用winhex去查看文件头。
3.上面一个0900是文件头中的全局方式位标记,后面一个0900是目录中源文件的全局方式位标记。若是未加密状态,两处应该都是0000;若是伪加密状态,文件头的全局方式位标记是0000,目录中源文件的全局方式位标记是0900;若是真加密,两处都是0900。将两处都改为0000,即可顺利打开flag.txt文件,得到flag。
三、ningen
1.下载下来是一张图片,在详细信息中没有获得什么线索,果断用winhex打开,果然发现了猫腻,里面存着一个ningen.txt文件。
2.将文件后缀名改为zip打开,里面有一个加密的flag.txt文件。
3.用ziperello暴力破解获取密码,直接获得flag。
四、小明的保险箱
1.下载下来是一张照片,打开一看没发现什么线索,果断用winhex打开,在文件末尾发现了猫腻,照片里藏了一个txt文件。
2.修改文件后缀为rar,解压压缩包,里面有一个加了密的flag.txt文件,用archpr软件爆破。
3.得到密码为7869,打开文件获取flag。
五、爱因斯坦1
1.打开压缩包,里面是一张图片,右击属性,发现在备注栏里有一句话,留着备用。
2.用winhex打开图片,发现图片里藏着一个flag.txt文件。
3.修改文件后缀为rar,解压压缩包,里面有一个加密的flag.txt文件,尝试用备注里的信息进行解密,顺利解开,拿到flag。
六、异性相吸
1.解压压缩包,里面有两个文件。
2.完全看不出来什么头绪,老方法用winhex打开。
3.还是没什么头绪,参考网上大神的说法,异性相吸就是一奇一偶做加法,同为奇数和偶数做减法。故直接写一个脚本跑一下就行了。
七、密码学的心声1
1.打开图片,里面有提示信息。
2.转成ascll码,没有八,看来是八进制,尝试将三个数字为一组,转化成十进制。
111=>73 114=>76 157=>111 166=>118 145=>101 123=>83 145=>101 143=>99 165=>117 162=>114 151=>105 164=>116 171=>121 126=>86
145=>101 162=>114 171=>121 115=>77 165=>117 143=>99 150=>104
3.将上述ascll码找到对应的字符,即为flag。
flag{ILoveSecurityVeryMuch}
或者也可以通过跑脚本实现
八、另外一个世界
1.用winhex打开图片,在末尾发现一连串的01字符串。
2.刚好是56位,尝试8为一组转换成10进制。
01101011 =>107 01101111 =>111 01100101=>101 01101011 =>107 01101010=>106
00110011 =>51 01110011 =>115
3.找到ascii对应的字母,提交,成功。flag=koekj3s
九、rot1
1.打开文档,根据密文中前四位的差值和flag这四个字母之间的差值相等,判断这应该是发生了偏移。
2.编写脚本,一个一个去试,到底是偏移了几位,经代码的测试,偏移了13位。
3.但是这个flag是不完整的,后面还有4个问号,还有一串md5值,那这md5值应该是flag经md5加密后的结果,编写脚本去测试,得到的结果即为flag。
十、神秘龙卷风
1.压缩包里面有一个加密文件,用ARCHPR暴力破解得到密码。
2.打开文件,里面是一长串的+.>,此为brainfuck加密。用在线加解密工具进行转换,得到flag。
十一、一张谍报
1.打开文件,发现一段颜色较淡的文字,这应该就是题目中说的行话了。
2.对这一段话毫无头绪,但是在上面的一段话中出现了几个关键字,应该是跟上文有关。
3.在查看另一段文章,发现其字数与上段文字的字数相等。
4.尝试去找到行话中的字在步骤2中文字的位置,再根据其位置去读取步骤3中段落中对应位置的文字进行拼接。解出来的暗号即为flag。
十二、这是什么觅🐎
1.用winhex打开附件,里面藏着一张flag.jpg,修改文件后缀,解压图片。
2.打开图片,里面是一个日历。
3.查看右下方的小纸条,F、W、S、T对应于日历上星期一到星期天的首字母,如果是3位的,则第二个数字代表是第几个S、T。
F1->3 W1->8 S22->12 S21->5 T12->14 S11->4 W1->8 S13->18
4.看见日历中在1上打了个×,把2345678圈了起来,以为是8进制,但是得到的结果中有8,应该不是8进制。再看其数字范围在20以里,尝试英文字母。
3->c 8->h 12->l 5->e 14->n 4->d 8->h 18->r
连起来为chlendhr,尝试提交,不对。
5.当把h换成a时就是calendar单词,这样看来也可能是W1找错了,应该是对应1(被×干扰了),提交flag,成功。
十三、奇怪的二维码
1.二维码的中间少了一块,想到阿兹特克码。
2.用binwalk命令进行分析,里面有两张图片,对其进行分离。
3.原始二维码的尺寸为3232,通过阿兹特克码生成脚本生成一个尺寸为3232的图片。
脚本地址:https://github.com/delimitry/aztec_code_generator
4.跟题目给的图片进行对比,发现题目图片中间少了99,将这张图片中的99拼接到题目所给图片中。
5.放入在线网站https://demo.dynamsoft.com/barcode-reader/ 进行解密。
十四、滴滴图
1.附件是一个加密的压缩包和图片,用binwalk命令分析图片,存在压缩包。
2.foremost命令进行分离,得到两个加密的压缩包。
3.用winhex打开honest_dog.jpg,在文件尾发现信息,进行unicode解码,拿到压缩包的密码。
4.两个压缩包的密码都是一样的,解压出来得到两张图片。用winhex打开,提示crc校验码不对,利用脚本还原出原始图片的高宽。
5.修改图片宽高,得到ffflaggg.zip的密码,进行解压。
6.音频中是一段摩斯电码,只需要管左声道的部分。
十五、easy_keyboard
1.对secret.Q文件进行处理。
keyboard_list = []
with open('secret.Q', 'r') as f:
lines = f.readlines()
for line in lines:
if 'KeyDown' in line:
data = line[line.find(' "') + 2:line.find('",')]
keyboard_list.append(data)
content = ''
for key in keyboard_list:
if key == 'Space':
content += ' '
elif key == 'Shift':
pass
elif key == 'BackSpace':
content += ' BackSpace '
elif 'Num' in key:
content += key[-1]
else:
content += key.lower()
print(content)
2.得到一句话,如下为真正的压缩包的解密密码,
3.按照BackSpace去回退,得到的密码为key1:6e187bef;key2:6e187bef;key3:64187bef,三个密码都是一样的显然是迷惑我们的。那应该回退的才是真实密码,拼接起来为6e187bef323d1a4bf067ec94。尝试去解密还是解不开,发现其压缩算法为ZipCrypto Deflate。
4.使用bkcrack去提取压缩数据。
5.得到keyboard.pcapng,得到键盘流量,尝试用UsbKeyboardDataHacker去解,行不通。用tshark将数据提取出来。
6.查看usbdata.txt文件,发现只有4f、50、51、52四个数据,每隔几行就有一行0。
7.查看对应的键盘意义4f为右,50为左,51为下,52为上。
8.用turtle将其画出来。
from turtle import *
data_list = []
with open('usbdata.txt', 'r') as f:
lines = f.readlines()
for line in lines:
data_list.append(line[4:6])
pensize(5)
pencolor('red')
setup(1900,500)
penup()
goto(-925, 200)
aux_x, aux_y = pos()
aux_x1, aux_y1 = (pos()[0], pos()[1]-70)
pendown()
for ori in data_list:
if ori == '4f':
setheading(0)
fd(10)
elif ori == '50':
setheading(180)
fd(10)
elif ori == '51':
setheading(270)
fd(10)
elif ori == '52':
setheading(90)
fd(10)
elif ori == '00':
penup()
if aux_x < 850:
cur_x, cur_y = pos()
if abs(cur_x - aux_x) < 5:
next_x = cur_x+20
else:
next_x = cur_x+10
aux_x = aux_x+20
goto(next_x, aux_y)
else:
goto(aux_x1, aux_y1)
cur_x1, cur_y1 = pos()
if abs(cur_x1 - aux_x1) < 5:
next_x1 = cur_x1+20
else:
next_x1 = cur_x1+10
aux_x1 = aux_x1+20
goto(next_x1, aux_y1)
pendown()
done()
9.将数字转化成16进制,在转成字符串。
from binascii import *
flag = int('2445986771771386879020650435885512839951630986248616789159906807439648035983463410703506828942860700640637', 10)
flag = unhexlify(hex(flag)[2:])
print(flag)
# b'DASCTF{896b7841-b50f-42c9-9421-b762b18f060e}'
十六、浪里淘沙
1.打开文档,字符串中包含了许多英文单词的组合。
2.题目中提到了5个数字分别是4,8,11,15,16。一开始想到的是有没有可能是按照单词出现的顺序进行排列,尝试提交了flag,发现不准确。
3.改变思路,发现整个段落中只出现上面几个单词,可能跟词频有关,将各个单词按照词频升序排列,选取第4,8,11,15,16位的单词,提交flag正确。
十七、just_a_rar
1.压缩包里面嵌套了一个压缩包,里面有一个加密的jpg文件。先看是不是伪加密,发现都是偶数,不是伪加密。再尝试暴力破解,密码为2016。
2.用16进制编辑器打开图片,文件头部和尾部都没有发现任何线索。
3.右击查看属性,详细信息里面有flag。
十八、一叶障目
1.打开图片,一片朦胧。拖进kali中用binwalk去分析,结果提示我crc校验错误。
2.CRC校验错误的一般情况是长度高度被改了。手动修改,测试了多次后,当被修改成01 E2和07 77时,图片上出现了模糊的flag。
3.想通过stegsolve软件去进行分析,发现打不开该图片。将其拉大之后,也能隐约看清楚了,提交flag,成功。但是网上大佬有写crc修复的代码。
#coding=utf-8
import zlib
import struct
#读文件
file = '1.png' #注意,1.png图片要和脚本在同一个文件夹下哦~
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",''))
#crc32key = 0xCBD6DF8A #补上0x,copy hex value
#data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xF1\x08\x06\x00\x00\x00') #hex下copy grep hex
n = 4095 #理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
for w in range(n):#高和宽一起爆破
width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x+4] = width[x]
data[x+8] = height[x]
#print(data)
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print(width,height)
#写文件
newpic = bytearray(fr)
for x in range(4):
newpic[x+16] = width[x]
newpic[x+20] = height[x]
fw = open(file+'.png','wb')#保存副本
fw.write(newpic)
fw.close
运行完之后,出现了一张清晰的图片。
十九、梅花香之苦寒来1
1.用16进制编辑器打开图片,发现有一长串的数字。
2.暂时还不知道什么意思,右击查看详细信息,得到了线索。
3.要会画图,应该是跟那一大串数字有关系,猜测是将16进制转字符串。
4.还真的到了一堆的坐标,那画图就应该是按照这些坐标去画了。这里采用gnuplot工具进行画图。将转换出来的坐标按照下列格式进行处理。
5.得到一张二维码,扫描二维码得到flag。
二十、谁赢了比赛1
1.用16进制编辑器打开图片。
2.隐藏着一个flag.txt,使用foremost命令分离文件。
3.用ARCHPR暴力破解密码。
4.解压出来两个文件,一个gif文件和一个txt文件。
5.将gif文件用stegsolve逐帧分析,得到了线索。
6.把该帧保存下来,继续用stegsolve打开,在改变通道后,出现了一张二维码,扫描二维码得到flag。
二十一、gakki1
1.用foremost命令去分离图片。
2.分离得到一个rar压缩包和一个jpg图片。
3.压缩包中有一个加密的文件,用archpr暴力破解。
4.得到一个flag.txt文件。
5.一长串的无规则的字母和符号,联想到了词频统计,编写脚本得到flag。
二十二、base64隐写
1.压缩包里有一张图片和一个txt文件。
2.从图片的属性中可以找到提示信息,但貌似没有什么用。
3.将txt的文件里的内容全部进行base64解密,得到的是C语言代码,参考大佬脚本可直接跑出flag。
二十三、纳尼
1.gif文件打不开,用file命令去查看其文件类型,也无法识别是个gif文件。
2.可能是文件头缺失了,用winhex添加gif文件头。
3.用stegsole一帧一帧去分析,发现原来是个base64加密。
二十四、我有一只马里奥
1.附件是一个exe文件,先用binwalk命令和foremost命令对其进行分析,分离出来两张图片,但没什么线索。
2.拖进虚拟机中尝试进行运行,运行后得到1.txt文件。
3.ntfs是一种数据流的格式,使用notepad命令去查看flag.txt文件,得到flag。
二十五、outguess
1.查看mmm.jpg的详细信息。
2.提示是社会主义核心价值观加密。
3.flag.txt文件中提示是outguess加密。
4.在kali中下载outguess。
5.利用outguess命令尝试解密,outguess的解密密钥有可能是abc。
二十六、伟大的侦探
1.打开密码.txt文件,提示是编码问题,尝试了多种编码,最后EBCDIC成功。
2.解压文件夹。
3.此为跳舞的小人密码。
4.破解出来为ILOVEHOLMESANDWLLM,转换为小写即可。
注:CTF中常用的一些图像密码参考https://www.bbsmax.com/A/l1dyla395e/
二十七、ezmsic
1.将图片放入kali中,利用binwalk命令,发现crc码校验错误。
2.应该是修改了长宽,利用大佬的脚本跑出原本的长、宽分别是0x1f4、0x1c8。
3.保存出现flag。
二十八、黑客帝国
1.打开文件,发现是rar文件头。
2.将文件后缀改为rar,但提示文件已被损坏。只能将16进制转换为2进制写入rar文件中。
3.用ARCHPR暴力破解。
4.打开图片却什么都没有显示。
5.用winhex打开,发现其文件尾是FFD9是jpg格式的文件尾,但文件头89504E47是png格式的文件头,两者不一致,故修改文件头为FFD8即可。
二十九、你有没有好好看网课
1.文件里有两个加密的压缩包,其中一个提示我们密码是6位数,直接暴力破解。
2.解压出来是一个doc文件和mp4文件。用winhex打开doc文件,发现其文件头是zip文件。
3.查看了所有的xml文件没有发现,尝试了列文虎克相关的时间去解密flag2.zip都不对,再去查看mp4文件。
4.视频里发现以上两个,对其进行解密,第一张照片中斜杆划分的都有两个数据,所以不是摩斯密码,应该是敲击码,第二张照片是base64加密。
第一个解密出来为wllm。
5.将上述两个密码拼接起来,即可解压flag2.zip,得到一张图片。
6.用winhex打开图片即可获得flag。
三十、我吃三明治
1.附件是一张图片,用binwalk打开。
2.发现是由两张jpg图片拼接而成,用foremost进行分离。
3.用winhex打开图片,去搜索jpg的文件头。
4.发现在第二处的文件头处有一串字符串,进行base32解密得到flag。
三十一、ez_xxd
1.将流量包导出为http对象,查看flag.txt文件,进行base64解码,导入进16进制文件中。
2.IHDR是png格式的数据库,修改文件头。
3.在流11中,有一段经典的流量,解码一下可以得到照片的名字叫做Miku.png。
4.看到maybe_today压缩包中也有一个叫Miku.png的文件,想到明文爆破。这里只能用bandizip软件进行压缩,其余软件都不行。
5.解密成功后就会得到一个不加密的maybe_today压缩包,flag文件夹里面是一个数据库文件,将其导入数据库,选中flag字段保存数据为txt文件。
6.对txt文件中的内容进行base64解密,另存为zip文件。
7.有一个加密的文件,密码在SceneManager.js中。
8.解压出来,进行兽音+base64+16进制转字符即可获得flag。
三十二、POI?QOI!
1.Github有识别QOI文件的项目,本地搭建地址https://github.com/floooh/qoiview。 搭建完成后,执行./qoiview file=/root/Desktop/poi命令,出现一张二维码。
2.扫描二维码,得到的是假flag。
3.将二维码另存为图片,用stegsolve进行查看,在gray bits通道二维码发生了变化,扫描获得flag。