MISC
神秘文件
下载解压后是个pptm文件,内容丰富
使用010打开ppt查看
发现为PK开头,属于压缩包文件。复制粘贴ppt,修改副本后缀为.zip并解压
part1
查看属性,发现奇怪字符
QFCfpPQ6ZymuM3gq
根据提示Bifid chipher,为双歧密码解密
使用Bifid Cipher Decode解码
CyberChef
key为:lanjing
再进行base64解码
得到:Part1:flag{e
part2
第二张ppt内有隐藏内容
点击打开后为
再解压后的压缩包中,找到了.docx文件,同理,010查看将此docx文件为压缩包文件。拷贝后,修改为.zip文件
解压打开压缩包,逐个查找里面的网页文件
在document.xml中,发现以下内容
特殊字符:mQPinNS6Xtm1JGJs
根据提示:凯撒加密,偏移量为:10
base64解码
得到:part2:675efb
part3
将vbaProject.bin文件拖进010后,发现一串编码
i13POMdzEAzHfy4dGS+vUA==
base64解码,RC4解码,再次base64解码
得到:PArt3:3-34
part4
第三张ppt,将图片略微移动,能够看到一串编码
手打下来得到:UGFSdDQ6NmYtNDA=
直接解码得到
PaRt4:6f-40
part5
第五张ppt下有备注
Vm1wR1UxRXhXWGhUV0d4WFlrZG9WMWxVUm1GWFJscHlWMjVrVmxKc2NIaFZiVFZQVkd4S2MxSnFVbGRXTTFKUVdWVmtVMDVyTVVWaGVqQTk=
根据提示,多轮base解码
得到:pArt5:5f-90d
part6
第五张ppt缩小一定比例后,能看到一串编码
或者在压缩包的media文件夹里面,能够更直观的看到编码
UGFyVDY6ZC0y
解码得到:ParT6:d-2
part7
第四张ppt,选择窗口后
看到一串编码:HRSFIQp9ZwWvZj==
以及提示:ROT13(All)
ROT13解码,以及base64解码
得到:PART7=22b3
part8
点击视图,查看ppt母版
似乎有隐藏内容,修改背景颜色,看见所有内容
c1GFSbd3Dg6BODbdl
去掉Bb13后解 base64
cGFSdDg6ODdl
得到:paRt8:87e
part9
第五张ppt,拖走中间的图片后,发现隐藏了一张图片文件,应该是图片隐写,使用图片隐写功能工具查看
或者
打开压缩包里面的media文件夹,找到解压好的完整图片
看见编码:cGFyVDk6ZGVl
解码
得到:parT9:dee
part10
缩小第四周的ppt,发现备注,是一段对话
逐句查看后,发现是维吉尼亚密码
密文:ZYWJbIYnFhq9
密钥:furry
得到:UEFSdDEwOjl9
base64解码
得到:PARt10:9}
将十部分的内容结合在一起
得到flag:
flag{e675efb3-346f-405f-90dd-222b387edee9}
通风机
下载解压,打开附件
得到一个.mwp文件
上网搜索后,得知
mwp是西门子PLC软件程序文件,一般来说我们可以通过西门子MICRO WIN编程软件打开。nwp格式文件也可能是S7-200编程程序文件,它是Lotus WordPro 97 的Smart Master文件,通过S7-200的编程软件,我们可以直接打开nwp格式的编程文件!
S7-200 SMART软件安装 (siemens.com.cn)
使用010打开.mwp文件,发现缺少文件头
补全文件头:47 4A 4B
保存后使用S7-200打开
符号表的用户定义中,发现一串编码
ZmxhZ3syNDY3Y2UyNi1mZmY5LTQwMDgtOGQ1NS0xN2RmODNlY2JmYzJ9
解码得到flag
flag{2467ce26-fff9-4008-8d55-17df83ecbfc2}
盗版软件
题目描述:在网上下了一个盗版软件就中毒了,他从内存中提取了文件和浏览器,请帮助分析;(flag为flag{md5(网站域名+c2地址)},例如flag{md5(baidu.com114.114.114.114)}为flag{ac0997de69c84760c943f59d9c7fc3cf})
下载附件,解压得到
分析 3842.dmp 文件,将后缀名改为 data,使用 gimp 调整参数发现域名
免费开源的图像处理软件GIMP下载安装(Windows)-CSDN博客
发现域名为 winhack.com
直接运行 hacked.exe 生成一个.ss 文件夹,包含一个 loader.exe 和一张图片。
Png
用 stegslove
打开,发现红通道有隐写
隐写了一个压缩包,但是有干扰数据,对干扰数据进行清除,编写脚本
import numpy as np
from PIL import Image
import struct
image = Image.open(r"E:\新建文件夹\2024国赛\Day2\Misc--Day2\盗版软件\盗版_047c296e75ae5b4950e2c9fe3c146c24\.ss\output.png")#文件路径
image = image.convert('RGBA')
# 转换图像数据为 numpy 数组
data = np.array(image.getdata(), dtype=np.uint8)
length_bytes = bytearray(data[0:8:2, 0])
data_length = struct.unpack('<I', length_bytes)[0]
extracted_data = bytearray(data[8:8 + (data_length * 2):2, 0])
# 将提取的数据写入文件
with open("1.zip", 'wb') as file: file.write(extracted_data)
运行脚本,得到压缩包文件
解压获得 .b
文件
放到微步云沙箱分析发现 C2 主机地址
微步在线云沙箱 (threatbook.com)
复现时,环境已过期,故分析失败
CRYPTO
hash
题目描述:题目内容:你能仅仅通过一个Python2.7自带的hash函数的输出,计算出它的原象的sha384哈希值吗?
附件:
hash.py
#!/usr/bin/python2
# Python 2.7 (64-bit version)
from secret import flag
import os, binascii, hashlib
key = os.urandom(7)
print hash(key)
print int(hashlib.sha384(binascii.hexlify(key)).hexdigest(), 16) ^ int(binascii.hexlify(flag), 16)
output.txt
7457312583301101235
13903983817893117249931704406959869971132956255130487015289848690577655239262013033618370827749581909492660806312017
output.txt 的两行数据分别是 hash.py 中的两行输出。
根据源代码逻辑,可以知道首要问题是如何将key 的密文,解密出原文。
第十七届全国大学生信息安全竞赛(初赛)Crypto部分hash题解-CSDN博客
OvO
附件得到task.sage,审计代码。
task.sage
from Crypto.Util.number import *
from secret import flagnbits = 512
p = getPrime(nbits)
q = getPrime(nbits)
n = p * q
phi = (p-1) * (q-1)
while True:
kk = getPrime(128)
rr = kk + 2
e = 65537 + kk * p + rr * ((p+1) * (q+1)) + 1
if gcd(e, phi) == 1:
break
m = bytes_to_long(flag)
c = pow(m, e, n)e = e >> 200 << 200
print(f'n = {n}')
print(f'e = {e}')
print(f'c = {c}')"""
n = 111922722351752356094117957341697336848130397712588425954225300832977768690114834703654895285440684751636198779555891692340301590396539921700125219784729325979197290342352480495970455903120265334661588516182848933843212275742914269686197484648288073599387074325226321407600351615258973610780463417788580083967
e = 37059679294843322451875129178470872595128216054082068877693632035071251762179299783152435312052608685562859680569924924133175684413544051218945466380415013172416093939670064185752780945383069447693745538721548393982857225386614608359109463927663728739248286686902750649766277564516226052064304547032760477638585302695605907950461140971727150383104
c = 14999622534973796113769052025256345914577762432817016713135991450161695032250733213228587506601968633155119211807176051329626895125610484405486794783282214597165875393081405999090879096563311452831794796859427268724737377560053552626220191435015101496941337770496898383092414492348672126813183368337602023823
"""
编写脚本
from Crypto.Util.number import *
n = 111922722351752356094117957341697336848130397712588425954225300832977768690114834703654895285440684751636198779555891692340301590396539921700125219784729325979197290342352480495970455903120265334661588516182848933843212275742914269686197484648288073599387074325226321407600351615258973610780463417788580083967
e = 37059679294843322451875129178470872595128216054082068877693632035071251762179299783152435312052608685562859680569924924133175684413544051218945466380415013172416093939670064185752780945383069447693745538721548393982857225386614608359109463927663728739248286686902750649766277564516226052064304547032760477638585302695605907950461140971727150383104
c = 14999622534973796113769052025256345914577762432817016713135991450161695032250733213228587506601968633155119211807176051329626895125610484405486794783282214597165875393081405999090879096563311452831794796859427268724737377560053552626220191435015101496941337770496898383092414492348672126813183368337602023823
k = e // n - 2
tmp = 65537 + (k+2)*n + (k+2)+1
R.<x> = PolynomialRing(RealField(1024))
f = e*x - (2*(k+1)*x^2 + (k+2)*n + tmp*x)
res = f.roots()
for root in res:
p_high = int(root[0])
PR.<x> = PolynomialRing(Zmod(n))
f1 = x + p_high
roots = f1.monic().small_roots(X=2^200,beta=0.4)
if roots:
p = int(roots[0]) + p_high
q = n // p
e = 65537 + k * p + (k+2) * ((p+1) * (q+1)) + 1
d = inverse(e,(p-1)*(q-1))
m = pow(c,d,n)
print(long_to_bytes(int(m)))
使用sagemath打开
运行脚本
得到flag:
flag{b5f771c6-18df-49a9-9d6d-ee7804f5416c}
古典密码
题目:
AnU7NnR4NassOGp3BDJgAGonMaJayTwrBqZ3ODMoMWxgMnFdNqtdMTM9
CyberChef
atbash解码 埃特巴什解码
Atbash Cipher
base64解码
得到fa{2b838a-97ad-e9f743lgbb07-ce47-6e02804c}
观察为栅栏密码栅栏加密/解密 - Bugku CTF
使用在线工具,枚举解密
得到flag
flag{b2bb0873-8cae-4977-a6de-0e298f0744c3}
注意:
采用一些其他的在线工具解码后,再复制粘贴到其他在线工具进行base64解码,可能会出错。因为两种相同的字符串格式不同。
zmf7mmi4mzhhltk3ywqtztlmnzqzbgdiyja3lwnlndctnmuwmjgwngn9
ZmF7MmI4MzhhLTk3YWQtZTlmNzQzbGdiYjA3LWNlNDctNmUwMjgwNGN9
建议使用一个解码工具进行解密。