BUUCTF-MISC(三)

BUUCTF-MISC(三)

二月 24, 2020 (Updated: )

最近更新: 2021-04-14 23:45

[GUET-CTF2019]zips

第一层压缩包密码直接爆破,第二次是伪加密,第三层根据 sh 的命令可知密钥是压缩包创建时的时间戳,查看压缩包修改日期,在线工具看一下那一天的时间戳,时间戳其实就是一个距离那个一九几几年几月几日零时零分零秒的秒数,同一天的时间戳前几位肯定一样,又因为其所使用python的相关时间戳函数范围的值精确到了小数点后两位,所以这里使用掩码攻击爆破密钥
时间戳1.png
时间戳2.png

[GUET-CTF2019]KO

就是ook编码的签到,找个在线解码网站解一下码就行了

从娃娃抓起

题目说是和汉字里程碑的两种编码方式。首先就想到了可能和汉字输入法有关,肯定不是拼音输入,于是想到五笔输入,很明显纯四位数字和五笔没有关系,试试下面的字母,果然拿到了半句连贯的话。上面的四位数字找了好久才找到是上世纪的电报码,我天,太狗了。电报码翻译过来是人工智能。连起来求md5即为flag

[DDCTF2018](╯°□°)╯︵ ┻━┻

打开之后发现就是50分的签到类的题,觉得应该不会有什么太大的坑。然而这里是我蒙出来的我特喵,瞎猜真的很难猜的,希望以后能少一点瞎猜,多一丝对吹头发选手的关爱TAT
因为是50分的题,又发现这是一列十六进制的值,关键是都在80ff之间,就盲猜是原字符的ASCII码值加了128,写个脚本就出来了

That was fast! The flag is: DDCTF{922ab9974a47cd322cf43b50610faea5}

[GWCTF2019]huyao

两个一样的图片,不过大小差了大概十几kb,目测是盲水印,去GitHub找一下盲水印的脚本,跑一下即可,另外,GitHub上面有两种不兼容版本的盲水印,一般用这个版本写入的水印只能用这个版本提取。

[HBNIS2018]excel破解

我尽力破解密码了,但着实爆不出来。不过这题有另外的不知道是不是非预期解,winhex搜索或者strings命令都能直接看到flag

voip

百度voip,学到这是网络电话用的协议,那这个流量包很明显就是捕获的一次在线通话,wireshark中有相关分析功能,如下:
RTP2.png
RTP3.png

经过本废喵十分钟的努力,终于记下了整个通话内容的全部单词。

1
Hi,this is your service.Please press one to listen flag.The flag is S E C C O N,hold on,please.9 0 0 1 I V R close race only capital letter for you.NO,thanks.

后来百度知道这是secconctf,我一开始以为flag是flag{SECCON9001IVR},丢,原来是SECCON{9001IVR}emmm

[GUET-CTF2019]虚假的压缩包

题目给了两个压缩包,虚假的那个明显是伪加密的意思,遇压缩包不觉先上7z,伪加密的压缩包7z可以直接解压缩并告知压缩包数据头部信息有错,这个错误直接忽略就可。得到 key.txt ,里面的内容明显是让解一个简单的rsa计算,n=33e=3,这和直接说 d=7 有啥区别,不如放一个稍微花里胡哨点的解密好玩2333。真实的压缩包的密码脑洞了一下下,不过只是一下下,还在正常范围之内。txt最后的那句话加上答案才是完整密码————答案是5.解密是一张图片和不知道是啥的文件,这里因为开了kali想用file命令查看那个未知文件是不是已知文件类型,结果发现图片在卡里下无法显示,故winhex修改高度看到提示 ^5 ,那就写个脚本和5异或咯。
这里犯了个小错,一开始直接把文件的十六进制数据和5异或了,然后发现得到的结果有问题,后来仔细看了看,出题人已经把文件的十六进制encode一次了,直接用读取用int转一下数据类型就可以了

1
2
3
4
5
6
7
8
9
10
11
12
import binascii
with open('cipher','r') as io,open('flag','wb') as fi:
while True:
tmp = io.read(128)
print(tmp)
if tmp == '':
break
flag = ''
for i in tmp:
flag += str(hex(int(i,16)^5)[2:])
print(len(flag))
fi.write(binascii.a2b_hex(flag.strip()))

然后winhex打开生成的文件看到开头又PK和xml的字符,推测是office的文件,先试试word文档打开,发现显示正常,结尾有多余的空格和换行,估计是白色字体,全选之后改一下字体颜色看到flag。
xml

[RCTF2019]draw

这是少儿编程logo语言,在网上找了好几个版本的解释器都不能完全识别文本的所有命令,最后在google上的一个在线工具中完整执行。。。再次验证在线工具一般情况比离线工具强的莫名理论emmmm

greatescape

这个题让我深感只会基操就来硬刚wireshark的难受。以后有空了认真拿着wireshark的教学手册修炼一波,一条一条流量硬刚的日子再也不想过了555.
首先查看流量协议类型发现存在ftpsmtp两种关键流量,前者一般人都知道是访问服务器文件的,后者略微冷一点点,不过大家玩信安的也应该有了解过,大概就是是邮件通信服务的协议类型。
分析两种流量的内容,在ftp流量中发现一个文件ssc.key,查看stmp中的邮件内容,得到关键信息:
stmp
他会通过https://ssc.teaser.insomnihack.ch该域名的服务器传输东西,那么很明显了,前面的ssc.key是一个类似于RSA私钥的文件(我打开看了确实是RSA私钥),而这里访问这个SSC的服务器用了SSL的加密,在 得到了私钥的情况下就可以为wireshark指定对目标TLS加密流量进行解密 。通过 编辑->首选项->protocol(协议)->(老版wireshark选择SSL)TLS ->RSA keys list:Edit..,直接添加指定IP、端口、协议、本地RSA私钥文件的信息,然后重新打开该流量包文件即可查看之前一些乱码的目标流量信息。在前面提到的那个SSC相关的所有解密了的流量信息中查找关键信息,一条一条的找着审啊(回头必须学一些进阶操作惹),在tcp.stream eq 80的http流量中发现小旗纸。
flag

[HBNIS2018]来题中等的吧

一开始没认出来这是音频分析里的图像emmm,后来看着图片开头竖着一列点点,中间横着一条线,才发现这是音频分析的截图。那就好说了,转一手摩斯电码就可,注意莫斯电码结果都是小写

[HBNIS2018]caesar

入门凯撒,偏移一位

[HBNIS2018]低个头

简单键盘密码

[GUET-CTF2019]soul sipse

Audacity 分析,一开始没发现东西,后来想到频谱图里下面有一行红线,猜测内容是被缩小了
red line
zoom
啊啊啊,我的眼睛!!!出题人让我逮到了有他好果子吃!
hint
两个数字的和,看来这个wav里面藏了其他东西,用wav相关的隐写工具先试一试,发现steghide解出了一个url,是腾讯微云的文件分享,下载下来,png的头部数据还错了,手动修复。
flag
转Unicode得到两个数字,相加即为flag

[HDCTF2019]你能发现什么蛛丝马迹吗

volatility分析,这里注意查看镜像信息后直接用第一个Win2003SP0x86来进行其它的分析会出现无法识别各种东西的问题,换后面的镜像即可。
查看文件发现存在flag.png,dump出来是一个二维码,扫码拿到一串字符串,base64尝试无果,再次分析该文件发现尾部还有第二个文件。分离后得到keyiv,那应该是对称加密算法的一种,尝试后在aesecb模式下解得flag

[*CTF2019]otaku

u1s1,去年我是怎么被*ctf的签到劝退的,记得当时签到死活提交不对。以为是个神仙比赛,这看来也是有简单题的,tnl555。题目文件是伪加密,解压是一个zip和doc,zip里有一个last words.txt和一段压缩设置的注释,doc里面有一段隐藏文字,很明显隐藏文字就是last words的内容。那应该就是明文攻击了,给了winrar的压缩方式,直接提取lastwords内容压一个包。
这里有个点,就是明文攻击要求内部的已知加密文件必须是一模一样的内容,压出来一个一样的包,想看打出来的包符合不符合要求可以用winrar打开看它们的crc校验码是否一样,校验码一样就可以直接攻击,不一样的话要先调整文件,调整到crc码一样才可以。
这里一开始打了个包发现crc并不一样,就查找问题,发现题目中的lastwords.txt是432byte,我们提取出来的txt是433byte,说明压缩算法暂时没问题,问题出在我们创建的txt上面了。打开txt查看我们提取的内容,总共是431个字符,但是大小是433byte,说明里面有一个字符不在ASCII码范围,故utf-8用了3个字节表示这个字符,而源文件432byte,应该是这个字符仅用了2byte。那就知道是什么问题了,将txt另存为ANSI或者GBK编码,再看就是432byte了,然后按照给出的压缩方式压缩,crc码一样,明文攻击得到压缩包密码。
解压缩得到flag.png,直接常规png隐写一条路,发现lsb隐藏了flag

[SUCTF2018]single dog

图片末尾有压缩包,解压得到aaencode,去掉最后一个('_'),然后复制到谷歌浏览器控制台里运行,可以看到解密后的代码,拿到flag

[ACTF新生赛2020]swp

看流量包能找到一个压缩包,提取出来需要密码,伪加密试一下得到两个flag文件,一个是elf,一个是swpswpvim编辑文件时候的备份文件,用于储存用户的修改信息。先查看一下elf没有恢复修改时候的内容,发现提示符号表错误,利用swp文件恢复原flag文件。之后利用IDA查看字符串即可看到flag

[WUSTCTF2020]alison_likes_jojo

大一点的jpg末尾有一个小压缩包,加密,无提示,爆破得到密码888866,拿到base64密文,解密后是killerqueen
目测是密钥,第二张图没有多余信息,用常见的几个jpg隐写工具试一遍,outguess解出flag

[MRCTF2020]千层套路

python写个脚本挂机解压一千次

1
2
3
4
5
6
7
8
9
10
11
import zipfile
import os
def un_zip(file_name):
zip_file = zipfile.ZipFile(file_name)
name = zip_file.namelist()[0]
zip_file.extract(name,"./",file_name[:4].encode('ascii'))
zip_file.close()
os.remove(file_name)
un_zip(name)

un_zip(xxxxx)

qr.txt,那就是二维码像素数据了,python转二维码加扫码一条龙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from PIL import Image
import zxing

img = Image.new('RGB',(200,200))

with open('qr.txt','r') as f:
pixels = []
for pixel in f.readlines():
pixel.strip()
pixels.append(pixel)
num = 0
for i in range(200):
for j in range(200):
img.putpixel((i,j),eval(pixels[num]))
num += 1

img.save('flag.png')

flag = zxing.BarCodeReader()
flag_str = flag.decode('flag.png')
print(flag_str)

[WUSTCTF2020]爬

查看文件十六进制,发现是pdf文件,改后缀打开,提示flag被文件压在下面了,用word打开,将图像图层移至最底层,看到flag图像,文字识别然后十六进制转ascii码

[WUSTCTF2020]girlfriend

是一段手机拨号音,直接dtmf2num工具提取对应按键:9996668827773369994444777555333777444336637777
很明显,手机九建密码,十年前那种拨号键输入的手机也就是现在的老年机的打字方式。按一遍得到flag

[MRCTF2020]CyberPunk

根据程序提示,修改系统时间到赛博朋克2077发售日即可

[XMAN2018排位赛]通行证

base64,栅栏,凯撒。
栅栏密码为7,用加密
最后flag开头为’xman’

[SUCTF2018]followme

winhex搜索CTF得到flag

[MRCTF2020]不眠之夜

熟练的赛棍

上自动化工具!
使用montagegaps

montage *jpg -tile 10x12 -geometry 200x100+0+0 flag.jpg
gaps —image=flag.jpg —generations=40 —population=120 —size=100

笨鸟先飞

120张图,12*10或者8*15,就硬拼,估计也要不了太长时间

[UTCTF2020]docx

解压docx文档,在图片资源文件夹看见flag图片

[MRCTF2020]Hello_ misc

Stegsolve进行lsb隐写分析得到hint.png,红色图片末尾有加密压缩包,解压得到一个txt,里面全是127,255,63,191
写个脚本解码:

1
2
3
4
5
6
7
8
with open('out.txt','r') as f:
with open('in.txt','w') as o:
for i in f.readlines():
o.write(bin(eval(i))[2:].zfill(8)[:2])

with open('in.txt','r') as f:
flag = f.read()
print(''.join([chr(int(flag[8*i:8*i+8],2)) for i in range(27)]))

得到flag.rar的密码,解压后发现里面的压缩包是doc文档,word打开,全选设置黑色,文档下面有几行base64编码
解码后会发现是一堆01,隐约能看出明文,脚本处理一下

1
2
3
4
5
6
7
8
9
10
11
a = '''MTEwMTEwMTExMTExMTEwMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTEwMDAwMDAxMTExMTExMTExMDAxMTAx
MTEwMTEwMTEwMDAxMTAxMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMTExMTExMTEwMTEwMDEx
MTEwMDAwMTAxMTEwMTExMDExMTEwMTExMTExMTAwMDExMTExMTExMTExMDAxMDAxMTAxMTEwMDAwMDExMTExMDAwMDExMTExMTEx
MTEwMTEwMTAwMDAxMTExMDExMTEwMTExMTExMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTExMTExMTAwMTEwMTExMTExMTExMTEx
MTEwMTEwMTAxMTExMTExMDExMTEwMTExMTAxMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTAxMTExMTAwMTEwMTExMTExMTExMTEx
MTEwMTEwMTAwMDAxMTAwMDAwMTEwMDAwMDAxMTAwMDExMTAwMDAwMTEwMTEwMTEwMTAxMTEwMDAwMDAxMTExMDAwMDExMTExMTEx
'''
import base64
a = a.split('\n')
for i in a:
print(base64.b64decode(i).replace(b'1',b' '))

[MRCTF2020]Unravel!!

wav文件末尾是一个openssl加密的密文,png文件末尾有压缩包,解压得到密钥,在线网站aes解密拿到明文key,然后silenteye提取wav里的flag

[BSidesSF2019]zippy

流量包,两条流量,第一条是终端的输入输出
第二条是压缩包。提取压缩包用第一条中的密码解压即可

[ACTF新生赛2020]明文攻击

图片末尾一个破坏了文件头的zip,修复一下,可以发现该zip中的flag.txt内容与加密压缩包中的一致,明文攻击解密即可

[UTCTF2020]file header

png文件头修复即可

[WUSTCTF2020]spaceclub

三个空格代表0,六个代表1,替换一下转ASCII

1
2
3
4
5
6
with open('1.txt','r') as f:
a = ''
for i in f.readlines():
i = i.strip()
a += i
print(''.join([chr(int(a[8*i:8*i+8],2)) for i in range(39)]))

[ACTF新生赛2020]music

文件错误,winhex查看,在末尾发现大量的A1,猜测文件和A1进行了异或,解一下异或,然后就能听到flag了

[UTCTF2020]basic-forensics

后缀名改txt,搜索flag

[SCTF2019]电单车

本题需要查看原题描述。搜索网络记录得知,原题描述为:

截获了一台电动车的钥匙发射出的锁车信号,3分钟之内,我要获得它地址位的全部信息。flag内容二进制表示即可

可知本题考察无线电知识,一番搜索之后找到一篇遥控器无线电信号的分析文章用来参考,地址如下:
https://www.freebuf.com/articles/wireless/191534.html

结合文章中的信号分析图,对本题无线电信号做一个二进制转换即可

[UTCTF2020]zero

零宽字符隐写,上工具:
http://330k.github.io/misc_tools/unicode_steganography.html

[湖南省赛2019]Findme

五个png,第一张,利用crc爆破原图像宽高:

1
2
3
4
5
6
7
import zlib

for w in range(1000):
for h in range(1000):
a = b'\x49\x48\x44\x52' + bytes.fromhex(hex(w)[2:].zfill(8)) + bytes.fromhex(hex(h)[2:].zfill(8)) + b'\x08\x02\x00\x00\x00'
if zlib.crc32(a) == 0x00000033:
print(a)

然后利用pngcheck修复另外两处IDAT块的格式错误,修复后。在1.pngblue 2色道下看到二维码,扫码得part1

2.png末尾有一个7z标识得压缩包,提取出来观察发现其实是zip压缩包,将7z全部替换为PK即可解压缩,然后按大小排序拿到part2

3.png在修复IDAT块末尾得crc32校验码时可以发现所有错误的校验码都刚好是一个可见ASCII码字符,提取出来得到part3

4.png末尾有part4

5.png末尾有part5,将五部分字符串拼接解base64即可。拼接顺序尝试一下就知道了,反正开头结尾都知道,中间三个也就六种可能

[QCTF2018]X-man-A face

二维码标识符修复,然后解base32

[ACTF新生赛2020]剑龙

不正经解

O_O用winhex查看发现是pyc,结合题目名字盲猜Stegosaurus隐写
注:如果该工具运行报错,恭喜你,可以重新配一遍python环境了(不是强迫症就算了,笔者有点强迫症,无法忍受自己的环境有小毛病)
注二:报错但也不想配环境,下载一个大蟒蛇吧

正经解aa

题目给了一个hint压缩包,里面有一个hh.jpgpwd.txt,pwd是aaencode,找个在线网站解密一下是welcom3!;,明显是jpg要用到的,jpg的隐写方式无非就那几种,猜不出来是什么就全试一遍,试到steghide拿到隐藏txt,后面一个openssl加密过的密文,找一下发现hh.jpg的文件信息给了密钥,解密一下得到提示Stegosaurus,然后就是不正经解的内容了。

请移步篇章四

也可移步篇章二

隐藏