标题: 【re】[广东省大学生攻防大赛 2022]pyre --爆破字符 [打印本页] 作者: tsx81429 时间: 2023-12-13 00:16 标题: 【re】[广东省大学生攻防大赛 2022]pyre --爆破字符 附件下载下来,解压,发现是一个python打包的exe 这里用pyinstxtractor进行反编译,后面会得到一个文件夹,里面有一个pyc文件 这里可以用进行网站进行对pyc进行反编译:在线Python pyc文件编译与反编译 (lddgo.net) 反编译的python结果如下: # Visit https://www.lddgo.net/string/pyc-compile-decompile for more information # Version : Python 3.7
def check(): a = input('plz input your flag:') c = [ 144, 163, 158, 177, 121, 39, 58, 58, 91, 111, 25, 158, 72, 53, 152, 78, 171, 12, 53, 105, 45, 12, 12, 53, 12, 171, 111, 91, 53, 152, 105, 45, 152, 144, 39, 171, 45, 91, 78, 45, 158, 8] if len(a) != 42: print('wrong length') return 0 b = None for i in range(len(a)): if ord(a) * 33 % b != c: print('wrong') return None print('win') check() 逻辑还是比较简单的,但就是这个b的值不知道,后面考虑到前四个字符固定是"flag",所以可以先把b给爆破出来,爆破b的脚本如下: str=[144,163,158,177]flag="flag" for j in range(len(flag)): for b in range(1,1000): if (ord(flag[j])*33)%b==str[j]: print(b)运行结果如下:可以得到b=179,接着跟着代码逻辑继续爆破: flag=""b=179for i in range(len(c)): for num in range(32,127): if num*33%b==c: flag+=chr(num)print(flag) 运行结果:flag:flag{2889e7a3-0d6b-4cbb-b6e9-04c0f26c9dca} ps:如果一开始用uncompyle6进行反编译pyc文件的话,b的值是可以反编译出来的,也就不用去爆破b的值
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!