题目是一张图片fr3sh_h4rv3st.jpg:
二进制看了一下没发现什么特别,查看一下exif信息:
有个信息比较可疑,此处应该就是密文
艺人: 1921754512366910363569105a73727c592c5e5701715e571b76304d3625317c1b72744d0d1d354d0d1d73131c2c655e
结合题目提示语:
Can you xor your way out of this? (Length of key: 4)
推测本题要使用异或方式解密,密钥长度为4
由于最终flag是以pctf四个字母开头,那么可以知道明文的前4个字节b’pctf’与密钥4个字节异或的结果就是密文前四个字节。
反过来用密文前四个字节与b’pctf’进行异或,就能得到密钥key
最终exp:
from Crypto.Util import *
c = 0x1921754512366910363569105a73727c592c5e5701715e571b76304d3625317c1b72744d0d1d354d0d1d73131c2c655e
c = long_to_bytes(c)
head = b'pctf'
key = b''
for i in range(len(head)):
key += chr(c[i] ^ head[i]).encode()
m = b''
for j in range(len(c)):
m += chr(c[j] ^ key[j%4]).encode()