攻防世界新手区题目wp

MISC

PWN

WEB

REVERSE

insanity

虽然是菜鸡题目,但俺依然不太会做…

上网看了一下wp,就是IDA打开,然后shift+F12,搜索flag
攻防世界新手区题目wp_第1张图片

python-trade

下载下来是一个pyc文件,使用uncompyle6反编译成python文件
攻防世界新手区题目wp_第2张图片
可以看到大致的流程是把flag按位与32异或,然后再加上16,base64编码,然后再转回成字符

ord()的作用是返回字符相应的ascii十进制编码,比如ord('a')会返回97

另外如果 a ⊕ b = c a\oplus b=c ab=c,可以推出来 a ⊕ ( b ⊕ b ) = a ⊕ 0 = a a \oplus (b \oplus b)=a \oplus 0=a a(bb)=a0=a,因此 a = c ⊕ b a=c \oplus b a=cb(原来学的都忘了…再推一遍)

解密代码:

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}

CRYPTO

MOBILE

你可能感兴趣的:(ctf练习)