BUUCTF-MISC(二)

BUUCTF-MISC(二)

二月 02, 2020

最近更新: 2020-02-16 18:10

zip

解压出来68个压缩包,还全是带真密码的,还没提示!!!我丢。不过查看压缩包发现每一个压缩包内部的文件数据都只有4byte,这情况,感觉是要爆破每一个文件的节奏。百度了一手,发现还真是爆破emmm,这个是 利用crc校验码进行加密文件内容爆破,因为即便是加密压缩包,猜测为了可以不查看加密数据而获知数据的准确性所以压缩包是保存有压缩前数据的哈希值 。遇到这种小数据加密压缩包,在计算力足够的情况下,就可以采取哈希碰撞的爆破方法来爆破加密数据(前提是数据长度在其所用的哈希算法中可以确保该长度每一个哈希值和其对应的数据都是双射的)。写个脚本咯:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import zipfile
import string
import binascii

def CrackCrc(crc):
for i in dic:
for j in dic:
for k in dic:
for h in dic:
s = i + j + k + h
if crc == (binascii.crc32(s.encode())):
f.write(s)
return

def CrackZip():
for i in range(0,68):
file = 'out'+str(i)+'.zip'
crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
CrackCrc(crc)
print('\r'+"进度:{:%}".format(float((i+1)/68)),end='')

dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt','w')
print("\nCRC32碰撞开始")
CrackZip()
print("CRC32碰撞完成")
f.close()

然后发现base64解码又是文件,因为不注意造轮子,这种脚本遇见一次写一次,丢,我再写:

1
2
3
4
5
6
7
8
import base64

str123 = "z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA=="

fi = open('flag.zip','wb')
str123 = base64.b64decode(str123)
fi.write(str123)
fi.close()

好了拿到最终压缩包,但是这个文件头emmm,没见过,百度。好吧,rar的文件头删了七个字节,手动加上,解压缩报错文件头错误,百度rar文件头部数据,行吧,文件头中第 0x16 字节应该是固定74,这里是7A,改了之后再次解压缩,报错文件CMT头损坏,回头再研究,这里已经解压出来了包中的 flag.txtCMT ,记事本打开cmt看到flag

弱口令

压缩包有密码,题目弱口令,懂了,是时候把我珍藏多年的小黄书小黄本掏出来了。我Ubuntu19都装好了,软件和内核都更新了一遍了,这emmm还没跑出来。。。
打开康康,有注释emmm,ctrl a了一下发现全是空白,我还以为压缩包注释也能把字设成白色了呢。仔细看发现,有 space\t,而且每一行二者数量都不超过5个,懂了!摩斯电码,丢,手动转码后拿到压缩包密码,解压缩是一个 女神.png ,这套路我熟(滑稽脸),带加密算法的lsb,弱口令想必就是在这里。该lsb加密算法地址https://github.com/cyberinc/cloacked-pixel
盲猜密码123456,过了

被偷走的文件

和秘密文件一样,ftp流量看到压缩包,提取压缩包,爆破密码

秘密文件

分析数据包,发现ftp数据条目后面有ctf字眼,跟踪流量,发现完整过程,hacker下载了一个rar压缩包,跟踪TCP流量找到传输压缩包那一条,把压缩包保存出来,有密码emm,开个后台爆破,然后前台手工找。
我丢,我人眼扫了整个流量包没找密码,然后突然看到我挂在后台的爆破程序老早就停了,密码四位数字:1903,解压拿flag

寂静之城

我丢内类目熬。16年初的社工题,我差点没把这个网页所有数据全人眼扫一遍,最后搜了wp才知道这是16年年初的社工题,能在收藏里面找到出题人信息,丢,回应转发点赞收藏四个条目,我差点没把眼睛审没了emmm,找到之后点开查看信息,有163邮箱,一串aes或者des加密的密文,还有密钥的提示,163被脱库了,邮箱密码就是密钥。。。
这emmmm,隔了四年的社工题,以前没接触过社工库类的社工题,被迫百度,得到密码,解出来一个微博链接,年代久远,网页已丢,得了,直接看wp看完吧。。。
出题人姓名DJ,但是已经没有微博了。。。。。去找了原来题目的wp,看了下,原来是去查开房记录。。。。。现在好了,flag就在眼前了,现在已经有了密钥,还差身份证号码了,知道了出题人的名字,和开房时间,果断去查开房记录啊!为了出这道题我也是拼了啊!不过不是我的身份证号。同名的而已

谁赢了比赛

winhex在结尾发现rar压缩包,提取出来,先挂上后台爆破,然后密码就出来了,1020,拿到一张动态图和txt,txt没用,分离动态图,第310张是白图,点开发下右下角有小字让猜flag,stegsolve打开换色道,发现二维码,扫码得flag

蜘蛛侠鸭

在流量包中发现大量ICMP流量,仔细查看发现每条数据后都跟有 $$START$$xxxxx的内容,且第一条含有 begin ,最后一条有 end ,把begin后的第一条流量中start后的字符解一下base64,发现是压缩包开头,ok,找到关键数据,写个脚本提取所有的base字符串(注意,有大量重复的数据,第一次写的脚本没考虑到结果提取出来的数据转回压缩包老是报错emmm),然后转回压缩包。解压得到一张奇怪的动态图。
这里看动态图感觉每一帧的时间怪怪的,在 CTF Wiki 里看到gif可以进行时间相关的隐写————利用每一帧的时间间隔。 kali下用 identify 的命令可以清晰提取出每一帧后的时间间隔
identify -format “%s %T\n” flag.gif
本题所提取的时间间隔只要 2050 ,推测是二进制,用 0 代替 201 代替 50,然后二进制ASCII转字符串,得到关键信息 mD5_1t ,32位md5即为flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os

def get_FileSize(filePath):
fsize = os.path.getsize(filePath)
return round(fsize, 2)

with open('out.pcap','rb') as fi:
fisize = get_FileSize(os.getcwd()+R'\out.pcap')
print(fisize)
with open('output','wb') as io:
flag = fi.readline() ; num = len(flag) ; str123 = ''

while flag != b'':
ind = flag.find(b'$$START$$')
if ind != -1:
base_str = flag[ind:-1].replace(b'$$START$$',b'')
if str123 != base_str:
io.write(base_str)
str123 = str(base_str)
str123 = eval(str123)

flag = fi.readline() ; num += len(flag)
print('\r任务进度:{:.2%}'.format(num/fisize),end='')

print('\n提取完毕')

间谍启示录

发现文件 systemzx 右键竟然可以直接解压缩,解压,得到一个flag.exe,运行一下,发现会自动调用文件已销毁emmm,再来一次,这次只提取 flag.exe ,运行,得到一个 机密文件.txt,打开即是flag

[SWPU2019]神奇的二维码

binwalk发现四个压缩包,提取出来,其中两个压缩包带有加密内容,另外两个没有密码,其中txt里面是一串base64,解码为 asdfghjkl1234567890 ,猜测可能是压缩包密码,尝试后发现是其中带有图片的加密压缩包密码,不过图片没有发现东西。
查看另外两个压缩包内容,flag.doc里面也是 base64 ,经尝试后,emmm,出题人过来,我要暴揍一顿,24byte的数据硬生生base64转码转到 8k2 !???,在?当个人? 解到最后的 24byte 内容即为 mp3 的解压密码,mp3是莫斯电码,转码得flag

USB

首先用 winrar 打开压缩包会提示文件头错误,我就是个憨憨,电脑上有 winrar 不用非用 好压 ,好压打开和解压缩全部没报错,然后我就没往文件格式上面想,以为多出去的一千多kb是有别的文件,用binwalk跑不出来,就各种查文件头搜索查文件尾搜索
修复rar压缩包文件头后,拿到png,stegsolve换色道拿到二维码,扫码拿到加密版flag:
ci{v3erf_0tygidv2_fc0}
看着像是 凯撒栅栏 加密,题目提示usb,旁边还有一个 key.ftm 没用,binwalk跑一下找到一个压缩包,里面有一个 usb.pcap ,就是这里,我去查usb流量分析的资料,刚好 CTF Wiki 里面有usb的相关资料,是大佬的usb实战分析,看懂之后,白嫖大佬的脚本回来提取关键信息。
然后。。。然后就是调试、查别的usb相关协议资料、调试、查别的相关协议资料、调。。。
大佬的脚本年代久远,一些情况已经沧海桑田,修改了一下新的脚本,其中涉及到判断键盘击键信息的相关部分也有不同,针对这道题一一做出调整,细微调整后的脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python

import sys
import os

DataFileName = "usb.dat"

presses = []

normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

shiftKeys = {"04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

def main():
# check argv
if len(sys.argv) != 2:
print "Usage : "
print " python UsbKeyboardHacker.py data.pcap"
print "Tips : "
print " To use this python script , you must install the tshark first."
print " You can use `sudo apt-get install tshark` to install it"
print " Thank you for using."
exit(1)

# get argv
pcapFilePath = sys.argv[1]

# get data of pcap
os.system("tshark -r %s -T fields -e usb.capdata > %s" % (pcapFilePath, DataFileName))

# read data
with open(DataFileName, "r") as f:
for line in f.readlines():
presses.append(line[0:-1])
# handle
result = ""
for press in presses:
if press[6:] == '0000000000' and press[2:4] == '00':
if press[0:2] == '00':
if press[4:6] != '00':
result += normalKeys[press[4:6]]
elif press[0:2] == '20' or press[0:2] == '02': # 20 or 02 all is shift+
if press[4:6] != "00": # shift key is pressed.
result += shiftKeys[press[4:6]]
else:
print "[-] Unknow Key : %s %s" % (press[0:2],press[4:6])
print "[+] Found : %s" % (result)

# clean the temp data
os.system("rm ./%s" % (DataFileName))

if __name__ == "__main__":
main()

使用脚本提取出关键信息:
key{xinan}
有key,flag疑似被 栅栏凯撒 加密,妥了,维吉尼亚栅栏 两种加密了应该,掏出之前写过的 维吉尼亚 的加解密脚本跑一下:
fa{i3eei_0llgvgn2_sc0}
22个字符猜测栅栏加密是两栏,在线解密跑一下得到最终flag(栅栏加密我记得国内外有两种加密算法,回头查一下资料自己造个轮子,感觉以后说不定忘了就会被坑)

[SWPU2019]我有一只马里奥

右键发现可以解压缩,拿到一个txt,打开发现提示,是ntfs隐写,然后 ntfsstreamseditor 查看拿到flag

john-in-the-middle

wireshark没看到什么有价值的东西,题目 john-in-the-middle 猜测和中间的流量有关系,看到有一些png,用foremost将其提取出来。其中有一个图片中间是一个小旗子,出于对(旗子)(flag)的敏感,分析这个图片,用stegsolve换色道后发现flag

小易的U盘

在u盘镜像里查看,发现有一个被生成的 autoflag 和其它的大小不一样,将其提取出来分析,winhex查看没有找到疑点,ida打开,查看main函数,发现有一个 _main_main_0 查看 _main_0 发现flag

二维码-一不小心把存放flag的二维码给撕破了

没啥捷径,ps手工修吧,直接把9块碎图放一起扫不出来,因为这个纸形变略微严重,ps的变形功能可以修回去,不过要是有大佬学图片识别相关的 够强 用脚本提取关键像素信息,然后自己利用提取的颜色坐标重新生成二维码我觉得也行嘿嘿嘿
这里放上我弄好的二维码叭。

二维码.png

黑客帝国

代码不规范,问题考虑不到位,ctfer两行泪T_T
解压文本中明显是文件的十六进制数据,第一次写的时候高估了电脑的力量,直接把整个数据全部在一次之内处理,然后。。。然后爆破密码爆破了一下午都爆不出来,又去查了一堆压缩包可能出现的花样。
之后突然想起来以前第一次写数据转文件脚本的时候有过数据太大导致文件有问题的例子,就赶紧改了一下脚本,然后一下爆出来密码3690。。。解压出图片,打开发现报错,winhex查看发现jpg的文件头被改成png了,改回来,打开图片看见flag

黄金六年

文件结尾有一段base64,解码发现是rar加密压缩包,仔细看视频发现里面有三张二维码,pr启动,逐帧扫码,所得字符串拼起来即为密码,解压得flag

[GXYCTF2019]佛系青年

压缩包伪加密,修改标志位,解压的文件中最后一句是编码,与佛伦禅,解码得flag

[SUCTF 2019]Game

png图片lsb分析发现藏有 DES 加密的密文,需要密钥。
密钥应该就在压缩包里了,有密码,尝试后是伪加密,是一个网页的文件,在 index.html 里发现flag字样,尝试后知是base32,解码后的内容即为密钥,解密时发现不是 DES ,是 3DES 加密

[SWPU2019]伟大的侦探

密码.txt里面提示密码的编码格式,用 010 Editor 更换编码为 EBCDIC 时看到密码。然后解压压缩包,一堆小人,网上搜索关键词,侦探 小人 密码 ,得知时福尔摩斯小说中出现的密码 跳舞的小人 ,对照搜出来的密码表解密即可

[GXYCTF2019]SXMgdGhpcyBiYXNlPw==

题目解base64后为: Is this base? 。flag.txt 中是大量的base64字符串,猜测是base64隐写,掏出自己之前造过的轮子,得到flag

[安洵杯 2019]吹着贝斯扫二维码

二维码切块文件尾部跟有序号,写个脚本按序号拼一下,扫码得到提示,压缩包打开可以看到注释,很明显提示给的是密钥的加密过程,反过来解密拿到密码,解压得flag

派大星的烦恼

这题老实说有点单纯脑洞了。两种细胞很明显就是说代表两种元素,总共256个字节,若转化成图像与二维码不沾边,故应当是二进制的ASCII码,但是没有任何其他提示,让人盲猜如何将其排列为原本的二进制ASCII码。。。吐了,简单试了下异或,不行,果断去搜了wp,不浪费这种时间,wp说是把每八位的二进制倒序一下就是对应字母和数字了

[GXYCTF2019]gakki

解压缩是jpg,winhex分析有压缩包,提取出来有密码不是伪加密,爆破得到密码,四位数字。解压出来是一堆无规律字符,猜测是字频。写个脚本,得到flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys

alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- ={}[]"
filename = input('请输入目标文本:')
f = open(filename, "r")
data = f.read()
result = {d:0 for d in alphabet}
f.close()

def sort_by_value(d):
items = d.items()
backitems = [[v[1],v[0]] for v in items]
backitems.sort(reverse=True)
return [ backitems[i][1] for i in range(0,len(backitems))]

for d in data:
for alpha in alphabet:
if d == alpha:
result[alpha] = result[alpha] + 1

print(sort_by_value(result))
print(''.join(sort_by_value(result)))

真的很杂

winhex分析出有个压缩包,提取出来,解压缩发现是个安卓应用包,改后缀zip为apk,用安卓反编译软件反编译,搜索flag字符串找到flag

[SWPU2019]Network

题目叫network,文件内容是一堆63、127、191、255,查资料发现可能有关联的是一个被叫做 TTL 的东西,这个 TTL 简单来说就是计数用的。简单比方一下,当你向目标主机发送报文时,ttl的初始值就是所允许经过的最大节点数,经过一个节点转发,ttl 就减一,减到零还没到目标主机就会自动销毁报文。这里四个数字差距过大,差值也不像有什么关联性。这里由 LSB 隐写联想到,lsb是修改色素二进制值最低位来隐藏01字符串,把63、127、191、255 可能是将01字符串藏在了最高位。因为lsb最低位隐写是因为修改最低位时只看图像不容易发觉问题,同理ttl每次减一,修改最高位影响最小。将四个数转二进制发现刚好最高两位分别是00、01、10、11,其余位皆为1,写脚本将其提取并转ASCII码,发现是压缩包,尝试后发现是伪加密,拿到文本,base64套娃。。。异常处理脚本写一个查看最终结果,得到flag

[SWPU2019]你有没有好好看网课

两个加密包,一个可以爆破出密码,一个应该是正常加密了。爆破的这个包里的word文字明显不连贯,应该是和解题有关,应该是指视频的 5:207:11 ,找啊找,在白色吊灯里有两节白色小字符emmm 提取出来:
….. ../… ./… ./… ../
dXBfdXBfdXA=
经尝试第一节是敲击码,第二节base64
合在一起是另一个压缩包密码,解压出一个jpg,在文件结尾发现flag

粽子的来历

四个word文档,在这里容我先说一句,金山文档WPS就是个弟弟,文件格式不对竟然不报错强行打开解码,我差点以为是我哈皮了,看着一堆乱码总感觉是文件有问题,office365打开当场报错格式有问题。winhex查看,发现四个文件开头都加了一句Icomefromxxxxx,猜测将其改回ff即可,另,题目描述说藏在dbapp了,第三个文件正好说来自dbapp,应该就藏在这个文件里。
打开是屈原的一首诗,题目描述也说曹小明把地点藏在了诗中,又说flag是正确数值连在一起后的md5。。。脑洞太大着实想不到点,无奈搜了wp后。。。。。。。。。
狗贼受死!!!行间距不一样,1.5倍行间距设为数值1,1倍设为0,连在一起的01字符串md5即为flag???在?你咋不设该行有‘之’字的话对应1,没有对应0呢???玩不起???是我太菜不配打ctf了,告辞

[BJDCTF2020]你猜我是个啥

下载下来的压缩包打开是空的,winhex在尾部看到flag

[BJDCTF2020]藏藏藏

winhex查看发现尾部有压缩包,解压缩是word,打开是二维码,扫码得flag

[BJDCTF2020]认真你就输了

用excel直接打开表格发现内容有问题,winhex查看发现这是xlsx格式的表格,而且看到了flag.txt的路径,直接解压打开,拿到flag

我爱Linux

感觉这题和Linux没啥关系,不如直接叫我爱python。
谷歌识图得知这张图片的团体名字指向python,再用google搜索关键词 python 80 03 ,得知这是用python生成的序列化文件,可以用 python 的 pickle 模块读取其内容。发现似乎是坐标元组组成的列表,将其字符按照坐标值写入文本,打开文本看到排列为flag的内容。(注意: 转出来的字符形状要仔细观察细节区分清楚,比如里面的 a 和 e
附上搜到的python序列化相关文章地址:https://diego.assencio.com/?index=99d3134bb98fdcc9a7c2bd6071db737d

1
2
3
4
5
6
7
8
9
10
11
12
13
import pickle

with open('1','rb') as f:
data = pickle.load(f)

with open('flag.txt','w') as f:
for i in range(30):
x = 0
for j in data[i]:
f.write(' '*(j[0]-x-1) + j[1])
x = j[0]
else:
f.write('\n')

[BJDCTF2020]just_a_rar

名字四位数,爆破,解压是一张jpg,右键属性,详细信息里看到flag

[BJDCTF2020]一叶障目

winhex修改png图片高度拿到flag

[BJDCTF2020]鸡你太美

打开是两个gif,第二个gif格式错误,winhex打开发现少了四个字节的文件头,添加后打开gif即可看到flag

[BJDCTF2020]纳尼

解压是一个格式损坏的gif,winhex修复文件头,发现是一段段字符,提取出来,拼在一起解base64即可,这里我解得结果中间错了一个字母不知道为什么,不过根据结果能猜出来错的这个字符应该是什么

百里挑一

流量包分析,发现很多jpg文件,导出http对象,linxu下用exiftool工具加管道符快速搜索一下有没有提示,发现一半flag
百里挑一1.png
后一半flag应该是还在流量包里,因为之前看到有大量ftp流量,回去查看ftp流量,果然通过ftp也下载了大量jpg,想到流量包中的数据一般也都是直接存储明文,尝试使用strings命令直接搜寻flag,这里需要用 -el 参数指定数据存储的大小端方式,不然会发现没有找到flag
百里挑一2.png

flag{ae58d0408e26e8f26a3c0589d23edeec}

[安洵杯 2019]Attack

这个比赛当时参加了,找不到自己的writeup放哪了,直接给官方writeup链接

静静听这么好听的歌

电脑最近重置了,matlab装着太麻烦,直接附上表哥的wp

Business Planning Group

winhex打开发现结尾跟了一大段未知数据,数据开头是连续三个大写字母 BPG (这里再次吐槽谷歌还是你谷歌,一开始我用百度搜关键词没搜出来,可能是我的关键词没加图像相关关键词的缘故。嗯,就在我打出这句话的时候我又去试了下,百度搜出来了,有百科,而且第一条结果就是emmmm)这是一种新的图像文件格式,大概意思是既像png一样保证质量又像jpg一样保证空间。进入其官网,有在线查看器,直接查看图片内容
BPG.png
明显是一串base64,解base64得flag

[安洵杯 2019]easy misc

套娃,丢,官方wp

请移步篇章三

隐藏