下载下来,发现是一个可执行程序,放到
32位且无壳
ida反编译
我们先查看一下所有字符串,寻找一下关键信息
我们先看一下引用right flag字符串的函数
这串的代码的意思是,将用户的输入存储在变量str中,然后通过函数“sub_4110BE”处理字符串“str”,并将结果存储在Dest中。计算Dest的长度,并将长度的值储存在i中,然后对Dest的值进行遍历,对Dest的每个字符的ascii码值加上这个字符在字符串中的索引值,然后比较"Dest"和“str2”中的值,呢么对str2的值进行反向处理就可以得到flag
这里引出新的一个疑问,“sub_4110BE”函数的作用
我们来看一下
看着很像base64的字母表,结合一开始的base64input的提示,应该就是进行了base64的加密
我们再来寻找一下str2的值
双击str2
将这串字符串每一位的字符的ascii码减去自身的索引值,在进行base64解码就可以得到flag
这里我提供个python脚本,不嫌麻烦的小伙伴也可以手工进行这些操作
import base64
sum = "e3nifIH9b_C@n@dH"
flag = ""
l=len(sum)
for i in range(0,l):
flag +=chr(ord(sum[i]) - i)
print(base64.b64decode(flag))
b'{i_l0ve_you}'
在buuctf中提交,需要改成flag的形式
flag{i_l0ve_you}