站点图标 Wankko Ree's Blog

[实验室日题][20201202][Misc]pyc WriteUp

WriteUp

打开题目附件,解压得到一张图片,右键发现Bandizip直接显示有个压缩包在文件尾,于是打开,发现压缩包有密码,注释为WU9VU0hPVUpJVVhJTkc=Base64解码后得到压缩包密码YOUSHOUJIUXING,解压得到1.jpg2.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版本的兼容性也还不太行。

于是观察代码猜测出题者意图,发现ZmxhZ3tueW51X2NjY3R0dGZmZn0=应当是最后输出的有用数据,尝试Base64解码得到flag。

实际上这题出题者意图是直接运行pyc文件,输入正确的key以得到flag,但是奈何版本问题不好跑成功...

flag

flag{nynu_ccctttfff}

退出移动版