平台WP · 2023年2月23日

重生之我不是套神

下载附件解压发现有密码

image-20230219165310744

直接扔010先简单看一下

发现不是伪加密,那就尝试性的爆破一下

image-20230219170113691

找到密码

解压

image-20230219170132225

得到三个文件

我们一个个看一下

首先看一下rsa.py

image-20230219170331524

可以看到这个rsa是将flag分为了两个部分,第一部分的e是根据系统当前时间的时间戳来生成的,第二部分是利用第一部分来进行加密的,这里只给定了n1,c1,分解n1我们只能得到p1和q1根据这两个数可以推出p2和q2,但是我们还不知道e,所以就暂时还解不开

那我们继续往下看这个png图片

image-20230219170851285

打开可以看到没有什么信息,但是用工具分析一下可以看到图片高度被修改了,我们放010还原一下

image-20230219170935755

image-20230219171101237

在下面我们可以看到一个时间,这里可以猜测这个时间就是上一个rsa的脚本的生成时间,根据这个时间来得到时间戳,应该就可以把rsa解开了

image-20230219171358205

得到时间戳为 1674283009

接下来解rsa试一下

先对n1进行一个分解

分解出p1和q1

p1=10683936386746729763
q1=17356272624649433071

然后就是解rsa

from gmpy2 import invert, powmod
from Crypto.Util.number import getPrime, bytes_to_long, long_to_bytes
e = 1674283009
c1 = 131553181340454081103292101619659907602
n1 = 185433312632788243825096480521192192173
p1 = 10683936386746729763
q1 = 17356272624649433071
phi = (p1-1)*(q1-1)
d = invert(e,phi)
m1 = powmod(c1,d,n1)
print(long_to_bytes(m1))

运行脚本得到第一部分flag为 flag{thisi

然后我们解后半部分这里我们先对e2进行运算,计算出来的结果是3

所以可以直接使用小e攻击

解出的flag为 spassword}

所以合起来就是 flag{thisispassword}

image-20230219174326778

然后我们解这个压缩包

解压发现需要密码,我们把刚刚解出来的flag当作密码尝试解压

image-20230219174416724

成功解开压缩包

image-20230219174434135

这里得到一个压缩包和一个zip

image-20230219174544079

可以看到压缩包进行了加密

所以我们应该是要根据这个图片来解密码

图片可以看到上面写的是猜猜这是什么,所以猜测是outguess隐写,密码应该是文件名 parafish

image-20230219181238779

得到密码为happynewyear

image-20230219181318204

解压得到两个文件

打开flag.txt

image-20230219181416347

没有看到什么有用的信息,放010看一下

image-20230219181443551

发现有好多不可打印的字符,所以应该是零宽度字符隐写

image-20230219181516367

解密得到

504B030414000000080019AB4C56177D
BE75EF000000EA00000008000000666C
61672E706E6701EA0015FF89504E470D
0A1A0A0000000D494844520000001500
0000150802000000267532C1000000B1
49444154789C955341128430080B4EFF
FF653CD4A11022EB72701068210985BB
BB3B0000DBC9DF21FE385EEDDF8BEC78
66B9D4EC498523E3179299D98E9609EB
8D145F7D3CEA40CDB9A64FD8E71C5282
A4CC906494523A4AB82815FEA2CEDD32
605445AC2397B2BD7161C4704E0F67CA
1154A9F04D88533F933708B1ED775B31
F3ACBFF4BB7EFB776D5492B9A8CEEC08
FC12B6ECD66B965C7E9ABF2F45F43FEF
3772C499D8990CB64BDA7769B04F4583
DD125A76541DD76B490000000049454E
44AE426082504B010214001400000008
0019AB4C56177DBE75EF000000EA0000
00080024000000000000002000000000
000000666C61672E706E670A00200000
0000000100180025978061E53ED90125
978061E53ED90125978061E53ED90150
4B050600000000010001005A00000015
0100000000

这个是压缩包的十六进制数值

所以用010导入一下

image-20230219181648300

解压得到一个图片

用脚本读取一下像素值

image-20230219190936670

得到:

001101010111010101101000001101010111010101100100001101100011011100111001001101010011000100110111001100110011000001101000001101010111101001101011001101100110111000110011001100110110011101101100001101100110100001110010001101000011100101111000001101000111011001101101001101000111000001100111001101010111011101100110001101000110000100110111001101100110001101100110001100100110100100110100001101010111000000111001000000000000000000000000000000000

尝试用二进制解密

image-20230219191017645

得到一串密文

5uh5ud67951730h5zk6n33gl6hr49x4vm4pg5wf4a76cf2i45p9

尝试用双十六进制解密

得到flag:nynusec{Happy_New_Year_To_You_All}

image-20230219191142952