下载题目
先看文本是什么
没什么用
查程序的壳
32位无壳程序
用IDA打开
F5查看反编译
可以看出sub_401260对输入内容进行了加密处理
点进去看看
看一下最后的byte_403000
一眼base64换表
这里的表是:
ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/
正常的base64表是:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
上exp进行解密
import base64
encoded_flag = "x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"
#ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/
#ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
_list = list("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
_flag = ""
for i in encoded_flag:
if (ord(i) <= ord('W') and ord(i) >= ord('A')) or (ord(i) <= ord('w') and ord(i) >= ord('a')):
_flag += chr(ord(i) + 3)
elif i == 'X':
_flag += 'C'
elif i == 'Y':
_flag += 'B'
elif i == 'Z':
_flag += 'A'
elif i == 'x':
_flag += 'c'
elif i == 'y':
_flag += 'b'
elif i == 'z':
_flag += 'a'
else:
_flag += i
print(_flag)
print(base64.b64decode(_flag).decode())
运行可以得到flag:flag{sh00ting_phish_in_a_barrel@flare-on.com}
提交
得分