攻防世界新手区题目wp

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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值