作者:Myu 时间:2022-07-17
队伍名称
Sca1pel
解题思路
Misc
Welcome_to_QGB 题
题目描述:
V2VsY29tZV90b19RR0I=
- 发现是 base64 编码,直接打开 cmd5 进行解密,发现明文就是 Welcome_to_QGB
- 根据规则,完整 flag 为 flag{Welcome_to_QGB}
大佬大佬 题
题目描述:获取图片的 lsb 隐写,然后修改图片尺寸
原图片
1. 根据提示可以知道,图片是经过 lsb 隐写的,通过 kali 的 zsteg 命令把图片分离出来分离出来的图片
2. 根据题目提示和图片提示,很明显需要修改图片的尺寸,我们用 010 Editor 工具以16进制的方法打开图片,修改图片的宽度即可
3. 这里把代表宽度的 00 00 01 30 修改为和长度一样,即 00 00 01 63,得到图片,并发现 flag
The fun picture 题
题目描述:简单的图片分析
1. 发现附件是压缩包文件并存在密码,使用暴力破解工具 ARCHPR 进行密码破解,得到密码解压后,得到三个文件 flag、flag.txt、FUN.png
2. 我们发现 FUN.png 并不是真正的图片,通过 010 Editor 工具以16进制的方法打开,分析文件头发现是压缩包文件,修改后缀名解压后得到名为 flag7 的文件
3. 根据 flag.txt 的提示,flag 和 flag7 均可能为图片,在其文件头部 0D 0A 1A 0A 前,
加 89 50 4E47 组成完整的 png 头部格式
4. 得到两个二维码文件,扫描 flag7.png 后得到 base64 字符串
ZmxhZ3trcmVwNDkwZmptbDU4NG5nZmtsZG0ybmRsbTQwZ252an0=
5. 直接打开 cmd5 进行解密,发现明文为 flag{krep490fjml584ngfkldm2ndlm40gnvj}
Crypto
babyRSA 题
1.打开附件,附件里面给出了p、q、e和密文c,通过p、q、e可以解出d,用d来解密密文c,得到明文m,然后再将明文m转为字节,发现flag。我们用的是python代码来实现。
附exp:
import gmpy2
from Crypto.Util.number import long_to_bytes
import rsa
import cchardet
p =gmpy2.mpz(105570604806073931560404187362816308950408774915960751676958845800335871518600455146040240314204606944641098914858159386588868785987100524581699043605351952348586132553458702298393907476955946990849442034441882748278181148503329309660427627438266645843535466462936882505833453738522673603026747578372964995367)
q =gmpy2.mpz(143288358949089585215266953016278524463612148007190135453434243047032456958207376091733443584531919755660149037321119885867830905350806865862130270602628423547624190876473872180462192096873381471710899246073298439365336797201672838785511965949336068032011363484044690916570288372443303750426476423930352603827)
e =gmpy2.mpz(33)
n = p * q
phi_n= (p - 1) * (q - 1)
d = gmpy2.invert(e, phi_n)
c = 2015688184356018702340063509729974600786840546364122789630929715337660295810961474144939260049892177486759513271253257458112942844435453563521353664294799145214833075575682837104619902593712323020851788866158742546117774717790910939444986189326649593286629046732910564929050955013637088916579175350308099506220813882274665233182543235264034038626524248300357250276274833999274982434790398489181021739913941634249265775997527901903799819193254397528348894700572493228638350806878366316533768758273322476421225382269304595973225131694907875536065669987510951854843686992445396860396865892650745594418900376500862332616
m = pow(c, d, n)
result = long_to_bytes(m)
encoding = cchardet.detect(result)['encoding']
print(result.decode(encoding))