护网杯签到题——编解码问题

easy_xor

题目:

1
AAoHAR1WI1BRX1RQJ1AgJVdfI1VXJ1JTJ1BVXiIjVyRRIiMlJRs=

题目提示为异或

观察,可能是base64,在线解码是乱码,这时要用脚本跑。不要认为乱码就是错的,往下就走不了,试一试对其进行编码或进一步解码。这个时候尽量不要用在线解码,容易出错。

常用的ctf编码解码函数有:

1
2
3
4
5
6
ord() 将单个字符转为ascii
chr() 将ascii转为字符
b64decode()
rot13()
url编解码
//如有其他请补充

所以按位对解码后的字符进行异或。那么用什么异或呢?

首先知道flag的形式为flag{.+},所以第一个异或出来的猜测是f。利用xor特点,反求参与xor的参数,base64解码后第一位与f异或结果为f。第二位还是f,第三位也是……于是用f循环异或整个字符串,得到flag。下面脚本:

1
2
3
4
5
6
7
8
9
#coding:utf-8
import base64

a='AAoHAR1WI1BRX1RQJ1AgJVdfI1VXJ1JTJ1BVXiIjVyRRIiMlJRs='
a=base64.b64decode(a)
b=''
for i in a:
b=b+chr(ord(i)^ord('f'));
print b