halo【攻防世界】Misc
这是一个傻逼的解题记录
初学自己摸索的菜鸟,欢迎大佬指正(磕头)
题目:
下载打开:
一时间也没啥头绪,丢到CyberChef里面看看
只有base64解码出非乱码字符串
igq4;441R;1ikR51ibOOp
解题经验太浅,一时也没有能把igg4与flag联系起来的方法
卡题了,去找了wp看看
原来是要进行【异或】操作——醍醐灌顶,以前有做过涉及异或的题目,多是在python代码中看到,原来还可以这样
异或运算加密/解密 - 一个工具箱 - 好用的在线工具都在这里! (atoolbox.net)
一个个试,也不需要很久
官方wp
直接base64解码+异或(从0试到200),几乎列出所有结果
import string from base64 import * b=b64decode("aWdxNDs1NDFSOzFpa1I1MWliT08w") data=list(b) for k in range(0,200): key="" for i in range(len(data)): key+=chr(ord(data[i])^k) print (key)
这里,我的电脑运行会报错:
TypeError: ord() expected string of length 1, but int found
参考:python3遇到的"ord() expected string of length 1, but int found"问题-CSDN博客
在python3下运行会出错而python2不会,原因是因为ord()
这个函数接受的类型是一个长度为1的字符串,而在python3当中传入的i
已经是一个整型数了
修改后可以在python3下运行的代码:
from base64 import b64decode # 这里填写需要解码的字符串 encoded_string = "aWdxNDs1NDFSOzFpa1I1MWliT08w" decoded_bytes = b64decode(encoded_string) data = list(decoded_bytes) for k in range(0, 200): key = "" for i in range(len(data)): key += chr(data[i] ^ k) print(key)
运行后,在一堆结果中找到唯一没有乱码或者其他符号的字符串,在前面挺好找的
最后得出flag:
flag{jdr78672Q82jhQ62jaLL3}