这个题下载文件后直接解压拖入ida64中查看main函数f5
后得到伪代码如下图
通过对代码的分析可以知道这段代码大致的意思就是:
将你输入的字符串存放到argv
中用argv
和代码中的flag
变量进行比较,相同就得到flag。但是代码中19行到23行对flag
变量进行了操作将flag
变量中存放的字符串中等于‘i’和‘r’的项转变为了‘1’
所以我们直接上脚本:
a = "{hacking_for_fun}" #flag变量中存放的字符串
flag = "" #我们要得到的最终结果
for i in range(0,len(a)): #模拟操作过程将字符串中等于‘i’和‘r’的项转变为了‘1’
if (ord(a[i]) == 105 or ord(a[i]) == 114):
flag += chr(49)
else:
flag +=a[i]
print(flag) #输出最终的结果
得到flag{hack1ng_fo1_fun}