- 题目">题目
- 解题
- 根据自己的环境选择-16使用的语句
- 现成工具/在线工具解法
- CyberChefSUB(%7B’option’:’Decimal’,’string’:’16’%7D)XOR(%7B’option’:’Decimal’,’string’:’32’%7D,’Standard’,false)&input=WGxOa1ZtdFVJMU1nWFdCWlhDRmVLWStBYVhOdA)">CyberChefSUB(%7B’option’:’Decimal’,’string’:’16’%7D)XOR(%7B’option’:’Decimal’,’string’:’32’%7D,’Standard’,false)&input=WGxOa1ZtdFVJMU1nWFdCWlhDRmVLWStBYVhOdA)
- CyberChefSUB(%7B’option’:’Decimal’,’string’:’16’%7D)XOR(%7B’option’:’Decimal’,’string’:’32’%7D,’Standard’,false)&input=WGxOa1ZtdFVJMU1nWFdCWlhDRmVLWStBYVhOdA)">CyberChefSUB(%7B’option’:’Decimal’,’string’:’16’%7D)XOR(%7B’option’:’Decimal’,’string’:’32’%7D,’Standard’,false)&input=WGxOa1ZtdFVJMU1nWFdCWlhDRmVLWStBYVhOdA)
- 现成工具/在线工具解法
题目
文件
下载的文件直接后缀名就是.pyc
拖入010可发现Python特征也挺明显的:
raw_input还是Python2的函数,Python3已经没有了:
Python3-内置函数 - input()
答案
查看Writeup
解题
反编译
文件类型是pyc,要先进行反编译
Pyc
源码
import base64
def encode(message):
s = ''
for i in message:
x = ord(i) ^ 32
x = x + 16
s += chr(x)
return base64.b64encode(s)
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
print 'correct'
else:
print 'wrong'
代码逻辑
- 内置的密码“correct”(字符串“XlNkVmtUI1MgXWBZXCFeKY+AaXNt”)
- 要求输入字符串(也就是Flag)
- 将输入的字符串进行“encode”函数处理
- 如果“encode”函数处理后的字符串和密码“correct”的字符串一致,就成功
解题逻辑
把变量“correct ”的字符串,进行反“encode”函数的处理。⌨反“encode”的Python脚本⌨
先把字符串进行Base64解码,然后-16,再^32,对应脚本: ```python import base64
def decode(strInput): textOut = ‘’ strInputDe64 = base64.b64decode(strInput) for i in strInputDe64:
# Python2 ↓
# s = ord(i)-16
# Python2 ↑
根据自己的环境选择-16使用的语句
# Python3 ↓
s = i - 16
# Python3 ↑
s = s ^ 32
textOut += chr(s)
return textOut
correct = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt’ flag = decode(correct) print(flag) ``` 除了Python版本的区别,应该没太大/别的问题。
现成工具/在线工具解法
CyberChefSUB(%7B’option’:’Decimal’,’string’:’16’%7D)XOR(%7B’option’:’Decimal’,’string’:’32’%7D,’Standard’,false)&input=WGxOa1ZtdFVJMU1nWFdCWlhDRmVLWStBYVhOdA)
这个在线数据处理的网站比较好的是可以多次处理数据,上面的Python代码逻辑在该网站的操作逻辑是:
- Base64解码,选择From Base64
- -16:选择减法函数SUB,注意值默认的是十六进制格式(Hex),要改成十进制(DECIMAL)
- ^32:选择异或函数XOR,同样注意值的进制