moectf2021-misc复现


find_me

题目描述:

1
2
3
树师傅在自己最喜欢的照片里藏了flag,你能找出来吗? 顺便一提,树师傅最喜欢的16进制编辑器是010 Editor。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

010查看文件末尾得到flag

最后flag为

1
NSSCTF{hs_g1v3_u_fl@g}

misc入门指北

题目描述:

1
2
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

查看md文件得到flag

最后flag为

1
NSSCTF{Th1s-1s-Misc}

诺亚的日记

题目描述:

1
2
3
听说Noah准备要写日记了,于是bb在Noah的电脑上做了点手脚。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

ctfnat-A一把梭

最后flag为

1
NSSCTF{D@m3daNe_D4me_yoooooo}

Homework

题目描述:

1
2
3
Noah看到含树将自己珍藏了多年的flag送给了学弟,于是随手翻了翻自己以前的作业,也丢了出来。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

改后缀zip解压,在document.xml找到flag

但是太乱了,写个脚本处理一下

exp:

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
import re
import sys
import zipfile
from bs4 import BeautifulSoup

def extract_text_from_docx(docx_path):
"""从 DOCX 文件中提取纯文本"""
try:
with zipfile.ZipFile(docx_path) as docx:
# Word 文档的主要文本存储在 word/document.xml
with docx.open('word/document.xml') as xml_file:
xml_content = xml_file.read().decode('utf-8')

# 解析 XML 并提取文本
soup = BeautifulSoup(xml_content, 'lxml-xml')
text_elements = soup.find_all('w:t') # Word 文本标签
text = ' '.join([elem.get_text() for elem in text_elements])

# 清理文本
text = re.sub(r'\s+', ' ', text).strip()
return text
except Exception as e:
print(f"处理文件时出错: {e}")
return None

def main():
if len(sys.argv) != 2:
print("用法: python docx_text_extractor.py <input.docx>")
sys.exit(1)

input_file = sys.argv[1]
if not input_file.lower().endswith('.docx'):
print("错误: 请提供一个 DOCX 格式的文件")
sys.exit(1)

text = extract_text_from_docx(input_file)
if text:
output_file = input_file.replace('.docx', '_extracted.txt')
with open(output_file, 'w', encoding='utf-8') as f:
f.write(text)
print(f"文本已成功提取并保存到 {output_file}")
else:
sys.exit(1)

if __name__ == "__main__":
main()

运行

1
python 1.py 诺亚的作业.docx

得到

最后flag为

1
NSSCTF{0h_U_f1nd_m3!}

好 康 的

题目描述:

1
2
3
一个好康的视频,请在没有家长陪同的情况下偷偷观看。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

视频提取字幕

最后flag为

1
NSSCTF{N3v3r_90tt@_L3t-y0U_dOwN~}

White Album

题目描述:

1
2
3
真的只是一张图片。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

宽高一把梭

PDF417扫描

最后flag为

1
NSSCTF{WhY_@r3_u_s0_5K1ll3D}

Phone Call

题目描述:

1
2
3
4
救命!爷被困在东南亚当码农苦力了……现在我只知道隔壁房间里有一座电话可以拨打到外界,但是只有一个电话号码可以拨通,我昨天偷听了好久,只偷听到了老大哥拨号的声音,你可以帮我破译出电话号码嘛?
flag为moectf{电话号码},电话号码中请使用-作为段分隔符。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

DTMF2num拨号音识别

1
dtmf2num.exe challenge.wav

最后flag为

1
NSSCTF{114514-1919810-7738-9634}

Macross

题目描述:

1
2
3
含树:Macross是什么? Noah:超时空要塞 含树:??? Noah:谷歌必应百度,请
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

打开画图软件,MacrossRecorder运行文件并记录轨迹

最后flag为

1
NSSCTF{Rec0rder_15_Funny}

easyForensics

题目描述:

1
2
3
https://cloud.189.cn/t/EJNBzmzmeiMb (访问码:h3pj) Noah捡到了一个移动硬盘,里面似乎有点小东西。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

FTK挂载

导出文件

1.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from base64 import b64encode as be
import os
import re

with open("file.in", "rb") as fin:
data = fin.read()

data = be(data).decode()
data = data.replace("/", "_")
data = re.findall(r'.{40}', data)

base = os.getcwd() + "\\file\\"
count = 1
for item in data:
folder = str(count) + " " + item
if count < 10:
path = base + "00" + folder
elif count <100:
path = base + "0" + folder
else:
path = base + folder
os.mkdir(path)
count += 1

查看file文件夹

根据1.py写出解密脚本

exp:

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
from base64 import b64decode as bd
import os

data = ""

for root, dirs, files in os.walk("D:\\tmp\\moectf2023\\file\\"):
for directory in dirs: # 避免使用内置函数名dir作为变量名
try:
# 假设目录名格式为"xxx yyy",取第二部分
part = directory.split()[1]
data += part
except (IndexError, ValueError):
# 处理目录名不符合预期格式的情况
print(f"Skipping directory: {directory} (invalid format)")

# 修正变量名,将file改为data
data = data.replace("_", "/")

try:
with open("D:\\tmp\\moectf2023\\file.out", "wb") as fout:
fout.write(bd(data))
print("Base64 decoded and written to file successfully.")
except Exception as e:
print(f"Error: {e}")
print(f"Data content: {data[:50]}...") # 打印前50个字符用于调试

运行得到文件,010查看文件

发现是docx文件,改后缀,docx打开得到flag

最后flag为

1
NSSCTF{Th@_1s_N0t_U53FULL_@_4LL}

社工题

题目描述:

1
2
3
4
含树偷偷告诉你:他在Noah的博客里留下了一些flag
本题目不需要加QQ或者打电话。 flag隐藏在某个网页上,不在文件里。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

前往github搜索noahbox 搜到账户MasterNoah
有一个叫HackedbyHS的repo repo下有三个branch 在NoahBox-patch-1里找到一串摩斯电码

摩斯解密

最后flag为

1
NSSCTF{HAHAHAHAH_NOAH_IS_A_VEGETABLE_CHICKEN}

R P G

题目描述:

1
2
3
link:https://cloud.189.cn/t/IjUN3qEvM3Mv (访问码:s8n1)某天,Noah在逛steam的时候发现了一个有意思的软件。 当天下午,他把匆忙做出来的游戏发给了HS。
https://github.com/XDSEC/moeCTF_2021
得到的flag使用NSSCTF{}格式提交。

在Map002.json发现parameters的数据连起来像是base64

提取parameters值

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from base64 import b64decode
import json

fin = open("D:\\tmp\\moectf2023\\Map002.json", "r")
map = json.load(fin)

s = b""
for i in map["events"]:
if i:
s += i["pages"][0]["list"][1]["parameters"][0].encode()

while 'moectf' not in s.decode():
s = b64decode(s)

print(s.decode())

运行得到

最后flag为

1
NSSCTF{Th3_w0rld_0f_G4m3}

文章作者: yiqing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yiqing !
  目录