0%

[SWPUCTF 2023 秋季新生赛]蟒蛇中文破解绿色版 clf328086的WriteUp

2024-01-27 16:19By
clf328086
REVERSEPythonBase64

Problem: [SWPUCTF 2023 秋季新生赛]蟒蛇中文破解绿色版

[[toc]]

思路

  • 解题大致思路
    主要看main.py,调用了base_class.py中的分数函数,传入分子、分母,然后就输出"分子/分母"的形式,列表表达式可以改写成:
for i, _ in enumerate(__import__("secret").flag): # 导入secrect模块的flag,enumerate遍历获取索引和值 # flag = '************************************' 未知 if i % 2 == 0: # 偶数索引 str(分数(ord(_), 1) * a) # ord(_):返回每个字符的Unicode码 a为1/2 等价于 ord(_)//2 = 列表[i]分数 else: # 奇数索引 str(分数(ord(_), 1) * b) # b为1/3 等价于 ord(_)//3 = 列表[i]分数

EXP

  • 具体攻击代码
l = ['39/1', '83/3', '83/2', '67/3', '42/1', '70/3', '123/2', '116/3', '52/1', '49/3', '115/2', '95/3', '49/2', '115/3', '95/2', '112/3', '121/2', '95/3', '119/2', '37/1', '57/1', '36/1', '50/1', '11/1', '95/2', '35/1', '58/1', '35/1', '115/2', '39/1', '26/1', '34/1', '97/2', '36/1', '33/2', '125/3'] flag = "" for i, _ in enumerate(l): pos = l[i].find('/') fz = int(l[i][:pos]) fm = int(l[i][pos + 1:]) if i % 2 == 0: flag += chr(2 * fz // fm) else: flag += chr(3 * fz // fm) print(flag)

总结

  • 对该题的考点总结
还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有
加载失败
广告
×
评论区
添加新评论