WriteUp
打开题目附件,解压得到一张图片,右键发现Bandizip
直接显示有个压缩包在文件尾,于是打开,发现压缩包有密码,注释为WU9VU0hPVUpJVVhJTkc=
,Base64
解码后得到压缩包密码YOUSHOUJIUXING
,解压得到1.jpg
和2.png
。
2.png
的图像内容有提示key在图像下面,那么改一下高度得到key为150678
。
1.jpg
拖到010
,发现jpg
模板文件尾后还有数据,直接提到另一个新建文件里,发现开头16字节都是0x00
,猜测应该是无用数据,直接删掉,然后开头四字节为61 0D 0D 0A
,感觉比较像pyc
的文件头魔数,并且后续内容页出现了py
字样,应该是pyc
没错。
直接uncompyle6
反编译,失败了,猜测可能是py3.9
版本的,因为uncompyle6
还不支持3.9
版本反编译。
计算魔数0Dh*100h+61h=0D61h=3425d
,查表发现3425
确实是3.9.0beta5
之后的3.9
分支版本的魔数,那么uncompyle6
确实没法反编译。
使用在线反编译工具python反编译 - 在线工具反编译,得到如下代码:
inn = input('key please\n')
c = 'flag'
b = 56021
a = 94657
d = a * b
if int(inn) == a + b:
print('Xr4Sb0X5HKDjlM@tyTBrYchiDHD3gIIjUyc3XGCrticD7kjPoWXXm^ZaQU1BBC!u87xXo07T4JKvV^ZRTrOQRunj$4M02av@rmd\n F*L*A*G\n******************************\n*ZmxhZ3tueW51X2', '', **('end',))
print('NjY3R0dGZmZn0=*\n******************************\n\n6TEBx*PUAT@jiPdH9W$Kn2mSdRK8Q0UIT1uJNT9w8dR7#sepzoRNtxr0q#dfX3$qr$uN^nqQBq7D9X^rtT8hFaIk#rcXk&xntVS')
尝试运行发现print
语句报错,所以应当是在线反编译工具对3.9
版本的兼容性也还不太行。
于是观察代码猜测出题者意图,发现ZmxhZ3tueW51X2
和NjY3R0dGZmZn0=
应当是最后输出的有用数据,尝试Base64
解码得到flag。
实际上这题出题者意图是直接运行pyc
文件,输入正确的key
以得到flag,但是奈何版本问题不好跑成功...
flag
flag{nynu_ccctttfff}