当前位置:   article > 正文

[CTF] 攻防世界MISC高手区部分题目WriteUp_ctfer2333

ctfer2333

记录一些有意思的题目

双色块

下载附件解压出来是个gif文件,仔细观察一下,发现两种色块应该分别代表01。写段Python脚本把数据提取出来

from PIL import Image
# 读取图片
image = Image.open('C:\\Users\\28919\\Desktop\\out.gif')
# 存放分离出的图片的路径
split = 'C:\\Users\\28919\\Desktop\\gif\\'
# 循环读取gif的每一帧
try:
	while True:
		# 当前位置
		current = image.tell()
		# 保存图片
		image.save(split + str(current) + '.png')
		# 移动到下一张
		image.seek(current + 1)
except:
	pass
# 储存提取出的字符
string = ''
# 直接把2进制转为10进制储存在line里
line = 0
i = 0
# 图片里每一个色块是10×10像素大小,总共24×24个色块
for y in range(24):
	for x in range(24):
		# 载入一张图片
		pix = Image.open(split+str(i)+'.png').convert('RGBA').load()
		# 读取色块的颜色值
		r, g, b, p = pix[x*10,y*10]
		if g == 255:
			# 0
			line = line << 1
		if r == 255 and b == 255:
			# 1
			line = (line << 1) + 1
		i += 1
		# 凑够8位就把line转为字符储存在string里
		if i%8 == 0:
			string += chr(line)
			line = 0
print(string)
  • 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

运行后得到:

o8DlxK+H8wsiXe/ERFpAMaBPiIcj1sHyGOMmQDkK+uXsVZgre5DSXw==hhhhhhhhhhhhhhhh

去掉后面那串无意义的hhhh就应该是个base64加密,但是直接解码出来还是乱码,应该在哪里还有别的东西。把图片丢到Kali里用binwalk命令跑一下:
binwalk
果然还有东西,用foremost命令提取出来:
foremost
得到一张图片:
key
得到一个密码ctfer2333,用DES解密出来就得到flag了,解密网站:http://tool.chacuo.net/cryptdes

flag{2ce3b416457d4380dc9a6149858f71db}

flag_universe

下载附件解压出来是个流量包,用wireshark打开,追踪TCP流,在第二个流里发现存在一个flag.txt文件
流2
继续往后翻,在第三个流里面发现一个png文件,在下面选择原始数据,保存。
流3
继续翻,在第七个流里面发现一段base64文本,解码后是一个假flag
流7

flag{This is fake flag hahaha}

全都保存出来后得到了这么几个文件:
提取出的文件
逐个检查这几张图片,发现在最后一张里存在LSB隐写,用Stegsolve打开文件,一番操作之后flag就出来了
Stegsolve

flag{Plate_err_klaus_Mail_Life}

3-11

下载得到一张图片,用Stegsolve打开,发现存在LSB隐写,开头为zip的文件头,直接保存用压缩软件打开。
LSB
没有任何加密,但解压时提示压缩文件损坏,用010editor看一下,文件尾后面存在无用数据,直接删掉,成功解压。

010editor
解压后的文件打开发现是base64加密,解密后能看到是一个png文件。
base64解码
直接用base64转图片得到flag:
flag

FLAG{LSB_i5_SO_EASY}

互相伤害!!!

下载解压得到一个位置类型的文件,丢到Kali里用file命令跑一下
file命令
得知为一个流量包,用Wireshark打开,右键追踪流发现全部是HTTP请求,内容全部是jpg图片,左上角文档里选择导出对象将所有HTTP请求里的东西全部导出来:
导出图片
发现这张图里有一个二维码
二维码
直接解码解不出来,但根据图片上的信息可知为AES加密,密码为CTF,解码网站:http://www.jsons.cn/aesencrypt
AES
解码后是一串数字,但这并不是flag,继续用binwalk分析图片:
binwalk
发现藏有一个zip文件,foremost分离出来解压得到一张清晰的二维码:
二维码
扫码得一句话:

扔下内衣真有一线生机????
交出内裤才有活路!!!!

那么我们的目标就锁定到了这张图上:
目标
然而这张图foremost分离出的压缩包里的二维码和之前那一张一模一样,最后我们发现这一张图片分离出的压缩包存在密码(真就照应题目名呗):
互相伤害
这时我们想到之前得到的那一串数字,输入后成功解压,得到一张不一样的二维码:
二维码
外面大的二维码扫描结果和前面的一样,里面那个小二维码扫描后得到:

flag{97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758}

题目里说要提交flag{xxx}内的xxx内容,所以最终的答案就是括号里面的内容(又一个坑)

Miscellaneous-300

下载附件得到一个有密码的压缩包,暴力破解之得密码46783,刚好是被加密的压缩包的名字,解压出来的压缩包还是有密码,那么这题就应该是一个压缩包套娃题,题目里让我们检查73168.zip这个文件,直接写Python脚本解之:

import zipfile
name = r"C:\Users\28919\Desktop\f932f55b83fa493ab024390071020088.zip"
while True:
    if name == r"C:\Users\28919\Desktop\zip\73168.zip":
    	print("find")
	ts1 = zipfile.ZipFile(name,'r')
	# 获取压缩包里第一个文件名并截取前5个字符
	passwd = ts1.namelist()[0][0:5]
	print(passwd)
	ts1.extractall("C:\\Users\\28919\\Desktop\\zip\\",pwd=passwd.encode())
	name = "C:\\Users\\28919\\Desktop\\zip\\"+ts1.namelist()[0]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

全部解压完有1509个压缩包,然而没有一个是73168,但是我们看到最后解压出的压缩包里是一个wav文件,暴力破解得密码:b0yzz,用Audacity打开切换到频谱图看到flag:
flag

BallsRealBolls

intoU

下载解压得到一个wav文件,直接播放发现最后有一段杂音,用Audacity打开切换到频谱图看到有一段flag,然而并不完整
flag
这道题目做法有很多,主要是Audacity的使用,左侧可以在菜单中把采样率改小,或者直接右击左侧频率栏选择缩小,一番操作完成后flag就出来了
flag

RCTF{bmp_file_in_wav}

Just-No-One

下载附件得一个exe文件,运行,发现是一个安装程序,继续,发现需要输入密码
password
由于这是道MISC的题,应该不是逆向分析,我们回到上一步看这个永远没有人会看的许可协议,里面有一句话:
flag
嗯,没错这就是flag

ILOVEREADINGEULAS

Disk

下载解压得到一个vmdk文件,解压看到里面有4个txt文件(WinRar可能会报错压缩包损坏)
txt
打开里面只有一句话:flag is not here.
用WinImage打开,右键将4个文件提取出来
WinImage
再用010Editor打开提取出来的文件,看到全部都是是二进制格式,将数据整合到一起转为字符串就得到flag
010Editor

# 二进制转换为文本
s = '''01100110011011000110000101100111011110110011010\
001000100010100110101111100110001011011100101111101000\
10000110001011100110110101101111101'''
flag = ''
for i in range(0,len(s),8):
    flag += chr(int(s[i:i+8],2))
print(flag)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

flag{4DS_1n_D1sk}

picture2

下载得到一张png图片,但是实际格式是jpg,用binwalk命令跑一下发现里面有一个zlib文件,再用binwalk分离出来(binwalk会自动将zlib文件解压)
binwalk
得到的文件是一段Base64,解码后根据文件头可以看出是一个zip文件,但是文件头前两个字符颠倒了
文件头修复
改正后解压发现需要密码,压缩包里的注释告诉我们密码是ZeroDivisionError这个报错信息后面的一句话,用Python写个1/0运行得到后面的文本为:integer division or modulo by zero
提示
解压后对里面的这段文本用 uuencode 解码即可得到flag

G0TE30TY[,C,X.$%&,C@Y,T5".#5%0C%"-#,Y04)&1C8Q-S,Q.49]

CISCN{2388AF2893EB85EB1B439ABFF617319F}

MulTzor

题目有点小问题,最后应该少了一位,这里贴上正确的原文

38708d2a29ff535d9e3f20f85b40df3c3fab465b9a731ce55b54923279e85b4397362be25c54df2020f8465692733ce5535193363dab465b9a732eee41479a2137ab735f933a3cf8125a91730ee4405f9b730eea4013b61a79ff5d138d3638ef12408a312aff535d8b3a38e71252923c2ce54640df3c3fab7f5c8d203ca6515c9b363dab40529b3a36ab515c923e2ce55b509e2730e45c40df3c3fab465b9a7318f35b40df2336fc57418c732de35347df3b38ef12519a3637ab575d9c3a29e357419a3779fe415a913479ce5c5a983e38ab5f529c3b30e55740d1730de35b40df2a30ee5e579a3779e65b5f962738f94b13963d2dee5e5f96343ce55156df2431e2515bd37338e75d5d98732ee2465bdf2731ea4613992136e6125c8b3b3cf912579a302bf242479a3779ca4a5a8c732bea565a907338e556138b3635ee4241963d2dee40138b2138e5415e96202ae25d5d8c7f79fc5340df3430fd575ddf2731ee125090373ce5535e9a730ce746419e7d79df5a5a8c732eea41139c3c37f85b579a213cef125186732eee41479a2137ab61468f213ce65713be3f35e25757df1036e65f5291373cf91277883a3ee34613bb7d79ce5b409a3d31e445568d732de4125b9e253cab50569a3d79a956569c3a2ae24456dd732de41247973679ca5e5f96363dab445a9c2736f94b1df5590de35713ba3d30ec5f52df3e38e85a5a91362aab45568d3679ea12559e3e30e74b13903579fb5d418b323be757139c3a29e35741df3e38e85a5a91362aab455a8b3b79f95d47902179f851419e3e3be757418c7d79cc5d5c9b7336fb57419e2730e555138f2136e857578a213cf81e138f2136fb5741932a79ee5c5590213aee561fdf2436fe5e57df3b38fd571392323dee1247973679fb5e46983136ea4057df1637e2555e9e7334ea515b963d3cab475d9d213cea59529d3f3ca5127b90243cfd5741d37334e44147df3c3fab465b9a731eee405e9e3d79e65b5f962738f94b13993c2be85740d3732aee51419a2779f85741893a3aee41139e3d3dab515a893a35e2535ddf323eee5c5096362aab465b9e2779fe41569b731ce55b54923279ee5f43933c20ee56138f3c36f9125c8f362bea465a913479fb405c9c363dfe40568c7f79ea5c57df3a2dab45528c732de357409a7329e45d41df232be451569b262bee41138b3b38ff1252933f36fc5757df2731ee1276913a3ee6531392323ae35b5d9a2079ff5d139d3679f957459a212aee1f56913430e557568d363dab535d9b732de357139c3a29e357418c732de412519a732bee5357d15953df5a56df143cf95f52917329e747549d3c38f9561e9a222ce242439a3779ce5c5a983e38ab50569c3234ee127d9e2930ab75568d3e38e54b148c7329f95b5d9c3a29ea5e139c2120fb465cd22020f84656927d79c2461388322aab504190383ce5125186732de35713af3c35e2415bdf143ce557419e3f79d8465299357ef81270962331ee4013bd262bee5346df3a37ab76569c3634e95741df6260b8001fdf2430ff5a138b3b3cab535a9b7336ed12758d3637e85a1e8c2629fb5e5a9a3779e25c479a3f35e2555691303cab5f528b362be2535fdf3c3bff535a91363dab5441903e79ea12749a2134ea5c138c2320a51272df3e36e5465bdf313ced5d419a732de3571390262de940569e3879e45413a83c2be75613a8322bab7b7ad37338ff1252df3036e554568d3637e85713973635ef125d9a322bab65528d2038fc1e138b3b3cab625c933a2ae31270962331ee4013bd262bee5346df2031ea40569b7330ff4113ba3d30ec5f52d2312bee5358963d3eab46569c3b37e243469a2079ea5c57df273ce85a5d903f36ec4b13883a2de31247973679cd4056913031ab535d9b731bf95b47962031a512778a2130e555138b3b3cab75568d3e38e5125a912538f85b5c917336ed1263903f38e5561fdf3036f95713af3c35e2415bdf1030fb5a568d731bfe40569e2679fb57418c3c37e5575fdf243cf957139a2538e847528b363da71245963279d95d5e9e3d30ea1e138b3c79cd405291303cab455b9a213cab465b9a2a79ee41479e3135e2415b9a3779ff5a56df031aab70418a3d36ab415a983d38e74113963d2dee5e5f96343ce55156df202dea465a903d79fc5b4797731ff9575d9c3b79ed5350963f30ff5b568c732afe424390212da512608a303aee4140992635ab515c90233cf95347963c37ab535e903d3eab465b9a7309e45e568c7f79ff5a56df152bee5c50977f79ea5c57df2731ee12718d3a2de2415bdf322dab705f9a273ae35e56867309ea4058df3036e5465a91263cef1246912730e712798a3d3cab030acb6375ab455b9a3d79cd405291303cab41468d213ce556568d363dab465cdf2731ee12749a2134ea5c40d15953cd405c92732de35b40df313cec5b5d913a37ec1e138b3b3cab7041962730f85a13b83c2fee405d923637ff127090373cab535d9b731af2425b9a2179d8515b903c35ab1a74bc751ad81b139e2779c95e568b3031e7574adf0338f959139d2630e746138a2379ea5c139a2b2dee5c4096253cab514186232dea5c52932a2de251139c3229ea505a933a2df21c13b63d30ff5b52933f20a71247973679ef57508d2a29ff5b5c91732eea4113923230e55e4adf3c3fab7e4699272eea54559a7371cc5741923237ab535a8d733fe440509a7a79ea5c57df3279ed5744df1b3cee4013d7143cf95f52917338f95f4ad67334ee41409e343cf81e139e2079ff5a56df182be257548c3e38f95b5d9a7371cc5741923237ab5c52892a70ab575e8f3f36f25757df3e2ce85a13923c2bee12409a302cf957138f2136e857578a213cf81255902179fe415a913479ce5c5a983e38a51272933237ab66468d3a37ec1e139e731aea5f518d3a3dec5713aa3d30fd57418c3a2df2125e9e2731ee5f528b3a3ae2535ddf3237ef125f903430e85b52917f79fb405c893a3dee561392263ae3125c99732de35713902130ec5b5d9e3f79ff5a5a913830e555138b3b38ff125f9a3779ff5d138b3b3cab56568c3a3ee5125c99732de357139c2120fb4652913235f2465a9c3235ab505c92313cab5f529c3b30e55740df2731ea461388362bee125a91202df9475e9a3d2dea5e13963d79ee445691272cea5e5f86733bf95752943a37ec1247973679e553459e3f79ce5c5a983e38a5127b90243cfd5741d3732de35713b42130ee554092322be25c56df3a37ff405c9b263aee56139e3d79ce5c5a983e38ab44568d2030e45c13883a2de31252df3536fe404797732be4465c8d733fe4401396272aab671e9d3c38ff411fdf213cf8475f8b3a37ec125a917338ab4241903f36e555569b7329ee405a903779fc5a5691732de357409a7334ee41409e343cf81250902635ef125d902779e957139b363af94b438b363da51264962731ab465b9a733aea42478a213cab5d55df213ce757459e3d2dab515a8f3b3cf912589a2a2aab535d9b732de357138a203cab5d55df3e2ce85a1399322aff5741df060aab7c52892a79e95d5e9d362aa712419a342ce75341d3732bea425a9b732bee5357963d3eab5d55df0674e95d528b7334ee41409e343cf812419a202ce65757d15953df5a56df3535ea5513962063ab7677bc071ff002579c3638b806069d326dbd040bcf3169e90101cc3761ea0a02cf656db8570a82

用Python把16进制字符转为字符串:

f = open('input.txt','r')
s = f.read()
s = s.decode('hex')
open("output.txt","w").write(s)
  • 1
  • 2
  • 3
  • 4

这道题用的是异或加密,用xortool尝试找出密钥:

root@kali:~/桌面# xortool -c 20 /root/桌面/output.txt
The most probable key lengths:
 3:  11.9%
 6:  19.7%
 9:   9.4%
12:  14.5%
15:   7.1%
18:  11.2%
21:   5.3%
24:   8.4%
30:   6.8%
36:   5.7%
Key-length can be 3*n
1 possible key(s) of length 6:
w3\xffSY\x8b
Found 1 plaintexts with 95%+ valid characters
See files filename-key.csv, filename-char_used-perc_valid.csv
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

输出的文件最后可以看到明显的flag,但并不正确,猜测应该是密钥还是存在错误.

T-e fla" is: DCTF{udcea3q5ba46s80b0bv23d8a}10643 9}Y

密钥共6位,而从文件头开始每6个字符里第一个都是错误的,推测出密钥的第一位错误。再看上面那句话,T-e应该为The,对 ‘-’ 和 ‘w’ 进行异或得原文字符为 ‘Z’,再对 ‘Z’ 和 ‘h’ 异或得密钥为 ‘2’。至此我们就得到了异或加密的密钥:23\xffSY\x8b
最后用Python进行异或解密即可得flag:

f = open('input.txt','r')
s = f.read()
s = s.decode('hex')
flag = ''
key = '23\xffSY\x8b'
length = len(key)
for i in range(len(s)):
	flag += chr(ord(s[i]) ^ ord(key[i%length]))
print flag
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

DDCTF{0dcea345ba46680b0b323d8a810643e9}

攻防世界MISC高手区部分题目WriteUp(2)

后续

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/443587
推荐阅读
相关标签
  

闽ICP备14008679号