AntCTF x D^3CTF MISC部分Writeup

文章目录


BadW3ter

在这里插入图片描述
附件是wav,但是文件头有点问题,对比一下正常的wav即可发现前十六个字节被修改了
在这里插入图片描述
第一行的内容猜测也是个有用的线索: CUY1nw31lai
修改前十六个进制正常的wav文件头
在这里插入图片描述
然后测试几个常见的wav文件隐写:SilentEye、Deepsound等
稍微测试一下发现是DeepSound
在这里插入图片描述
输入前面的到线索作为密码。得到flag.png
在这里插入图片描述
file识别文件发现flag.png是TIFF文件
在这里插入图片描述
PS可以选择打开TIFF文件
在这里插入图片描述
首先有两个图层,有一个白底图层,然后这个二维码是三部分颜色组成:黑、白、灰
在这里插入图片描述
把白底图层涂成灰色(和二维码图层中的灰色一样的:[33,33,33]),用油桶或者填充都可以
在这里插入图片描述
然后 图像->调整->亮度/对比度 直接将亮度,对比度拉到最低,扫描二维码即可得到flag
在这里插入图片描述

D3CTF{M1r@9e_T@nK_1s_Om0sh1roiii1111!!!!!Isn't_1t?}

WannaWacca

在这里插入图片描述
流量包tcp contains "flag" tcp追踪长度最长的包
在这里插入图片描述
可以得到解flag.zip.WannaWacca的密钥
d3-win7-5f799647.vmem查看进程,比较可疑的是cmd.exe以及notepad.exe
在这里插入图片描述
cmdline查看发现几个可疑点,SmartFalcon.exereadme.txt
在这里插入图片描述
memdumpnotepadSmartFalcon的内存文件导出出来
readme.txt内容如下

What Happened to My Flag?
Your important flag is encrypted.

Can I recover My Flag?
Sincerely.We guarantee that you can recover your flag safely and easily. But you have not so enough time. If you don't pay in 48 hours, you won't be able to recover your flag.

How Do I Pay?
Payment is accepted in D3coin only. Send $126 worth of D3coin to the author. All ransom  will be used to play Wacca.

YOU WILL NEVER KNOW MY IP ADDRESS!

binwalk分析SmartFalcon.exe
在这里插入图片描述
foremost可以分离出来zip压缩包
从分离得到压缩包中,寻找zip文件头,提取第二个zip文件头到文件末尾的数据,另存为zip
在这里插入图片描述
得到完整的压缩包,只有一个png图片文件,但是有密码
在这里插入图片描述
有固定的文件头的压缩包,可以使用bkcrack进行明文爆破

echo -n "89504E470D0A1A0A0000000D49484452" | xxd -r -ps > key

bkcrack -C flag.zip -c "I can't see any light.png" -p key -o 0

bkcrack -C flag.zip -c "I can't see any light.png" -k bd363f25 3a7da3aa 4bbe3175 -d flag.png

得到flag.zip中的图片,根据图片特征,有很多白线,以及图片内容是一个苹果,猜测可能是苹果系统特供图
在这里插入图片描述
使用fotoforensics查看这张图在Apple端的显示内容: https://fotoforensics.com/

在这里插入图片描述
可以看到在Apple并行端显示的内容不一样,下载这张图可能不好下,F12之后再network中找到这张图的链接,下载这张图。或者审查源码下载也可

使用PS打开flag.png原图,分析图片上方的类似条码的东西。长:1920 宽:12
在这里插入图片描述
将这部分选中,提取出来的另存成另一张图片,尝试二进制、二维码都无果,之后发现可以分成若干个2*3的小块,类似盲文
测试前几个盲文,可发现数据内容是由十六进制组成,且是zip压缩包的字节流文件头
找一张比较标准的,含有数字和字母的盲文对照图
在这里插入图片描述
然后使用Python简单处理即可得到flag.zip

from PIL import Image
from binascii import *

img = Image.open('Braille.png')
width, height = img.size
num_map = [{"[0, 1, 1, 1, 0, 0]":"0"}, {"[1, 0, 0, 0, 0, 0]":"1"},
		   {"[1, 0, 1, 0, 0, 0]":"2"}, {"[1, 1, 0, 0, 0, 0]":"3"},
		   {"[1, 1, 0, 1, 0, 0]":"4"}, {"[1, 0, 0, 1, 0, 0]":"5"}, 
		   {"[1, 1, 1, 0, 0, 0]":"6"}, {"[1, 1, 1, 1, 0, 0]":"7"}, 
		   {"[1, 0, 1, 1, 0, 0]":"8"}, {"[0, 1, 1, 0, 0, 0]":"9"}] 
alp_map = [{"[1, 0, 0, 0, 0, 0]":"a"}, {"[1, 0, 1, 0, 0, 0]":"b"}, 
		   {"[1, 1, 0, 0, 0, 0]":"c"}, {"[1, 1, 0, 1, 0, 0]":"d"}, 
		   {"[1, 0, 0, 1, 0, 0]":"e"}, {"[1, 1, 1, 0, 0, 0]":"f"}]
num_prefixes = [0, 1, 0, 1, 1, 1]

all_data = []
for h in range(height):
	row_data = []
	for w in range(width):
		pix = img.getpixel((w, h))
		if pix == (255, 255, 255):
			row_data.append(1)
		elif pix == (0, 0, 0):
			row_data.append(0)
		else:
			print(pix)
			break
	all_data.append(row_data)

def get_pix(row_idx, col_idx):
	sin_bra_data = []
	for r in range(row_idx, row_idx + 3):
		for c in range(col_idx, col_idx + 2):
			data = all_data[r][c]
			sin_bra_data.append(data)
	return sin_bra_data

all_bra = []
for r in range(0, height, 3):
	for c in range(0, width, 2):
		bra_code = get_pix(r, c)
		all_bra.append(bra_code)

res_data = ''
idx = 0
for i in range(len(all_bra)):
	if all_bra[i] == num_prefixes:
		for dic_num in num_map:
			try:
				res_data += dic_num[str(all_bra[idx+1])]
			except:
				pass
		idx += 1
	else:
		for dic_alp in alp_map:
			try:
				res_data += dic_alp[str(all_bra[idx+1])]
			except:
				pass
		idx += 1

with open('flag.zip', 'wb') as f:
	f.write(unhexlify(res_data))

在这里插入图片描述
在这里插入图片描述
一首歌的歌词:《The Ray of Light》
含有很多不可显示字符:<0x7f>,但是并非零宽度字符隐写,再尝试了字频、wbstego文本隐写等多种文本隐写方式无果之后,想到了之前做盲水印的时候还有一种文本盲水印

Text_Blind_WaterMark: https://github.com/guofei9987/text_blind_watermark

但是缺少密码,密码很有可能在Apple并行端查看的另一张图片上,使用PS继续分析,在右下角可以发现还有一段类似原图的条码,继续尝试发现解出来的字符不对
在这里插入图片描述
多次尝试之后把图片发现顺时针旋转180度之后,可以解出来
在这里插入图片描述
注意有大小写字母区分
得到如下

UkB5MGYxITlodA equal equal

base64解码得到密码:R@y0f1!9ht

from text_blind_watermark import embed, extract

sentence_embed = open('Future will lead.txt').read()
password = 'R@y0f1!9ht'
wm_extract = extract(sentence_embed, password)
print("解出的盲水印")
print(wm_extract)

在这里插入图片描述
在这里插入图片描述

d3ctf{b576241258a44b868ea25804b0ec1d4e}
相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2021 设计师:Hiro_C 返回首页

打赏作者

末 初

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值