Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

XCTF 攻防世界 Reverse新手题(insanity, python-trade)

XCTF 攻防世界 Reverse新手题(insanity, python-trade)

1. insanity

这一题十分的简单,将下载下来的附件直接用IDA打开,查看Hey-View,在最右侧一栏进行查找,大概在后半部分,可以直接看到flag

2. python-trade

首先,这个题目没有用到IDA,因为看到下载的附件是.pyc后缀的,是python的字节码文件,可以先尝试pyc文件反编译。
有2种反编译的方法:

  1. 使用在线工具:https://tool.lu/pyc/,直接将pyc文件上传,即可看到反编译后的代码
  2. 使用命令行工具:uncompyle 安装和使用方法:
pip install uncompyle
uncompyle6 文件名.pyc > 文件名.py

接下来,分析源代码

def encode(message):
	s=''
	for i in message:
		x=ord(i)^32
		x=x+16
		s+=chr(x)
	return base64.b64encode(s)

分析可以得到:每个字符的ASCII码值先与32异或,然后加上16,最后进行base64编码,解码反过来即可:

import base64
correct='...'
message=base64.b64decode(correct)
s=''
for i in message:
	s+=chr((i-16)^32)
print(s)

这样就可以得到最终的flag了

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 如何使用navicat导出数据库表结构和表数据的sql脚本?

下一篇: PriorityQueue的基本概念

精华推荐