攻防世界MISC进阶区 21-25题 write up
攻防世界MISC进阶区 21-25题writeup
21、hit-the-core
1、下载附件,是一个以core结尾的文件,所以放到linux系统中,使用strings命令查看一下,在中间发现有一段很可疑的字符串(可疑主要是因为有花括号{}和flag的格式很像啊)。
2、仔细观察这些字符串,发现每隔4位就有一个大写的字母,然后就按照这个规律,每隔四个取出一位字符,直接可以得到flag。
- cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85egb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}
flag: ALEXCTF{K33P_7H3_g00D_w0rk_up}
strings命令
- strings - print the strings of printable characters in files. 意思是, 打印文件中可打印的字符
- strings 命令在对象文件或二进制文件中查找可打印的字符串,字符串是 4 个或更多可打印字符的任意序列,以换行符或空字符结束。
core文件
- core文件:在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。
如果觉得这样慢慢的一个一个自己去取出会发生错误的话,也可以使用python处理,代码如下:
str = 'cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}'
flag = ""
for i in range(3, len(str),5):
flag += str[i]
print(flag)
flag: ALEXCTF{K33P_7H3_g00D_w0rk_up}
22、快乐游戏题
1、下载下来,是一个小游戏,每次打开游戏的界面格子的显示都不一样的,游戏的大概意思就是:不要让猫走到最边缘的格子。
flag: UNCTF{c783910550de39816d1de0f103b0ae32}
23、glance-50
参考文章:https://blog.csdn.net/vhkjhwbs/article/details/100775409
1、下载文件是一个gif格式的图片,但是打开是一张很小很小的图片,又不能放大。
2、原来图片是把原来的图片分割成很小很小的图片,然后再连接而成的,所以要把每一张图片分隔开,再把每张图片拼接成原来的图片,使用python脚本处理,代码如下:
#切割图片
import os
from PIL import Image
def seoaration_gif(gif_file):
png_dir = gif_file[:-4] + '/'
os.mkdir(png_dir)
img = Image.open(gif_file)
try:
while True:
current = img.tell()
img.save(png_dir+str(current)+'.png')
img.seek(current+1)
except:
pass
if __name__=='__main__':
gif_file = 'F:\\CTF学习\\题目文件\\23.gif'
seoaration_gif(gif_file)
#拼接图像
from PIL import Image
path = "F:\\CTF学习\\题目文件\\23\\"
save_path = 'F:\\CTF学习\\题目文件\\234'
im = Image.new('RGBA',(2*201,600)) #创建新照片
imagefile = [] #存储所有的图像的名称
width = 0
for i in range(0,201):
imagefile.append(Image.open(path+str(i)+'.png')) #遍历,将图像名称存入imagfile
for image in imagefile:
im.paste(image,(width,0,2+width,600)) #将图片张贴到另一张图片上
width = width +2
im.save(save_path+'result.png')
im.show()
flag: TWCTF{Bliss by Charles O’Rear}
24、Ditf
ZmxhZ3tPel80bmRfSGlyMF9sb3YzX0ZvcjN2ZXJ9
1、下载文件是一张很大很大的小姐姐的图片。
2、没有什么思路,就放到linux系统中使用binwalk查看一下,发现文件中有一个压缩包,然后再用foremost查看一下,但是打不开,那应该是要什么压缩密码之类的吧!
3、然后把文件放到HxD中查看一下,图片那么大肯定是有原因的,因为事出反常必有妖嘛!把图片大小该小一点,将图中的4C改为FF。
4、查看图片,果然在下面出现了一串字符串,这应该就是解压的密码了吧,
5、然后把文件后缀名改为zip,解压得到一个pcapng结尾的文件,然后用wireshark打开该文件,然后点击 文件_-> 导出对象 -> HTTP -> save all,导出为http保存下来。
6、然后打开保存的文件,一个一个查看文件,发现再文件%5c{4}中发现了一串base64编码。
7、解码,得到flag。
flag{Oz_4nd_Hir0_lov3_For3ver}
25、4-1
1、下载下来是一张图片。
2、尝试了放到HxD中,没什么收获(可能是我没发现吧),放到linux系统中,使用binwalk查看一下,发现里面有压缩包,然后再foremost查看。
3、解压之后的文件中有三个文件,其中有一个名字时zip的文件,打开,里面还有一个zip压缩包,解压打开,有个txt文档和压缩包,打开文档查看,内容是:Although two days doing the same things, but day2 has a secret than day1,大概的意思就是day2中比day1多了一些东西,那就是盲水印了。
4、使用脚本(github上有https://github.com/chishaxie/BlindWaterMark)直接提取盲水印,得到flag。
flag: wdflag{My_c4t_Ho}