题目
BUUCTF在线评测 reverse3
思路
Exeinfo PE查看程序为32位,无壳
打开IDA ,找到有main_0函数,F5得C伪码,分析如何得到 right flag!
查看Str2的内容为 e3nifIH9b_C@n@dH
知道了Str2,也知道Dest经过变化的代码,我们可以写脚本得到原来变化前的Dest,但是变化前的Dest从v4来,得到v4的sub_4110BE有什么作用我们不清楚,就动态调试看看
字符串查找到程序输入入口,F2下断点,运行输入aaaa,运行到sub_4110BE后,返回值YWFhYQ==像Base64加密,经验证,"aaaa" base64加密后就是 "YWFhYQ==",所以函数sub_4110BE的作用就是base64加密
现在已经知道flag的变化过程,逆推flag即可:e3nifIH9b_C@n@dH —> 一个for循环减法 —> base64解密 —> flag
for循环逆解脚本
str2 = list("e3nifIH9b_C@n@dH")
print(str2)
# print(ord(str2[0]))
for i in range(0,len(str2)):
str2[i]= chr(ord(str2[i])-i) #改为相减
print(''.join(str2))
#ord():字符转ascii码
#chr():ascii码转字符
得到 e2lfbDB2ZV95b3V9
base64解密e2lfbDB2ZV95b3V9
得到flag{i_l0ve_you}