MISC
PWN
WEB
REVERSE
insanity
虽然是菜鸡题目,但俺依然不太会做…
上网看了一下wp,就是IDA打开,然后shift+F12
,搜索flag
python-trade
下载下来是一个pyc
文件,使用uncompyle6反编译成python文件
可以看到大致的流程是把flag按位与32异或,然后再加上16,base64编码,然后再转回成字符
ord()
的作用是返回字符相应的ascii十进制编码,比如ord('a')
会返回97
另外如果 a ⊕ b = c a\oplus b=c a⊕b=c,可以推出来 a ⊕ ( b ⊕ b ) = a ⊕ 0 = a a \oplus (b \oplus b)=a \oplus 0=a a⊕(b⊕b)=a⊕0=a,因此 a = c ⊕ b a=c \oplus b a=c⊕b(原来学的都忘了…再推一遍)
解密代码:
import base64
def decode(ciphertext):
plaintext = ''
ciphertext = base64.b64decode(ciphertext)
for i in ciphertext:
s = i-16 # python2 uses ord(i)
s = s^32
plaintext += chr(s)
return plaintext
cipher = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = decode(cipher)
print(flag)
# nctf{d3c0mpil1n9_PyC}